GTK 3.96, versión experimental de GTK 4, publicado

10 meses despois do pasado lanzamento de proba presentado GTK 3.96, unha nova versión experimental da próxima versión estable de GTK 4. A rama de GTK 4 está a ser desenvolvida como parte dun novo proceso de desenvolvemento que tenta proporcionar aos desenvolvedores de aplicacións unha API estable e compatible durante varios anos que se pode usar sen medo. de ter que reescribir a aplicación cada seis meses debido a cambiar a API na próxima rama de GTK. Ata que GTK 4 estea totalmente estabilizado, recoméndase que as aplicacións que se ofrecen aos usuarios sigan construíndose mediante a rama GTK 3.24.

O principal cambios en GTK 3.96:

  • Na API GSK (GTK Scene Kit), que proporciona renderizado de escenas gráficas a través de OpenGL e Vulkan, traballouse sobre os erros, que foron máis fáciles de identificar grazas á nova ferramenta de depuración gtk4-node-editor, que permite cargar e mostrar nodo de renderizado nun formato serializado (pódese gardar no modo de inspección GTK inspector), e tamén comparar os resultados de renderizado cando se usan diferentes backends;

    GTK 3.96, versión experimental de GTK 4, publicado

  • As capacidades de transformación 3D foron levadas a un nivel que lle permite crear efectos de animación como un cubo xiratorio;

    GTK 3.96, versión experimental de GTK 4, publicado

  • Completamente reescrito Backend de Broadway GDK deseñado para renderizar a saída da biblioteca GTK nunha xanela do navegador web. A antiga implementación de Broadway non encaixaba nos métodos de renderizado propostos en GTK 4 (no canto de saír a un búfer, agora usa un modelo baseado en nós de renderizado, onde a saída está composta en forma de árbore de operacións de alto nivel, procesados ​​de forma eficiente pola GPU usando OpenGL e Vulkan).
    A nova opción de Broadway converte os nós de renderizado en nós DOM con estilos CSS para renderizar a interface no navegador. Cada novo estado da pantalla procesase como un cambio na árbore DOM en relación ao estado anterior, o que reduce o tamaño dos datos transmitidos ao cliente remoto. As transformacións 3D e os efectos gráficos impléntanse mediante a propiedade de transformación CSS;

  • GDK segue implementando API deseñadas tendo en conta o protocolo Wayland e limpando API baseadas en X11 ou movelas a un backend X11 separado. Hai avances no traballo para afastarse do uso de superficies infantís e de coordenadas globais. Eliminouse a compatibilidade con GDK_SURFACE_SUBSURFACE de GDK;
  • Continuou a refactorización do código asociado coa realización de operacións de arrastrar e soltar, incluíndo os obxectos GdkDrag e GdkDrop separados propostos;
  • Simplificouse o manexo de eventos e agora úsase só para a entrada. Os eventos restantes substitúense por sinais separados, por exemplo, en lugar de eventos de saída, proponse o sinal "GdkSurface::render", en lugar de eventos de configuración - "GdkSurface::size-changed", en lugar de eventos de mapeo - "GdkSurface: :mapped", en lugar de gdk_event_handler_set() - "GdkSurface::event";
  • O backend de GDK para Wayland engadiu soporte para unha interface de portal para acceder á configuración de GtkSettings. Para traballar con métodos de entrada, propúxose soporte para a extensión de protocolo text-input-unstable-v3;
  • Para o desenvolvemento de widgets, introdúcese un novo obxecto GtkLayoutManager coa implementación dun sistema para controlar a disposición dos elementos dependendo da disposición da zona visible. GtkLayoutManager substitúe as propiedades fillas en contedores GTK como GtkBox e GtkGrid. Propóñense varios xestores de deseño preparados: GtkBinLayout para contedores simples cun elemento fillo, GtkBoxLayout para elementos fillos aliñados linealmente, GtkGridLayout para aliñar elementos fillos nunha cuadrícula, GtkFixedLayout para posicionamento arbitrario de elementos fillos, GtkCustomLayout para elementos tradicionais baseados en sizelating_allocate manipuladores;
  • Engadíronse aos widgets GtkAssistant, GtkStack e GtkNotebook obxectos de acceso público para a visualización da páxina de elementos fillos, aos que se transfiren as propiedades secundarias non relacionadas co deseño destes widgets. Dado que todas as propiedades fillas existentes se converteron en propiedades habituais, propiedades de deseño ou movéronse a obxectos de páxina, o soporte para as propiedades fillas foi eliminado por completo de GtkContainer;
  • A funcionalidade básica de GtkEntry trasladouse a un novo widget GtkText, que tamén inclúe unha interface de edición GtkEditable mellorada. Todas as subclases de entrada de datos existentes foron reformuladas como implementacións de GtkEditable baseadas no novo widget GtkText;
  • Engadiuse un novo widget GtkPasswordEntry para os formularios de entrada de contrasinal;
  • GtkWidgets engadiu a capacidade de transformar elementos fillos mediante métodos de transformación lineal especificados mediante CSS ou o argumento gtk_widget_allocate a GskTransform. A característica especificada xa está aplicada no widget GtkFixed;
  • Engadíronse novos modelos de xeración de listas: GtkMapListModel, GtkSliceListModel, GtkSortListModel, GtkSelectionModel e GtkSingleSelection. No futuro planeamos engadir soporte para modelos de lista a GtkListView;
  • GtkBuilder engadiu a posibilidade de establecer propiedades do obxecto localmente (en liña), en lugar de usar ligazóns por identificador;
  • Engadiuse o comando a gtk4-builder-tool para converter ficheiros da interface de usuario de GTK 3 a GTK 4;
  • Descontinuouse a compatibilidade con temas clave, menús tabulares e caixas combinadas. Eliminouse o widget GtkInvisible.

    Fonte: opennet.ru

Engadir un comentario