El lanzamiento de GTK 3.99.0 marcó la finalización de la funcionalidad prevista para GTK 4

publicado lanzamiento experimental final del marco GTK 3.99.0, que implementa todas las características planeadas para GTK 4. La rama GTK 4 se está desarrollando como parte de un nuevo proceso de desarrollo que intenta proporcionar a los desarrolladores de aplicaciones una API estable y compatible durante varios años que se pueda utilizar sin temor a tener que hacerlo. reescriba las aplicaciones cada seis meses debido a los cambios de API en la próxima rama GTK. Está previsto que GTK 4 se lance antes de fin de año.

De los más significativo cambios в GTK 4 puedes notar:

  • Método para diseñar elementos según restricciones (diseño de restricciones), en el que la ubicación y el tamaño de los elementos secundarios se determinan en función de la distancia a los bordes y el tamaño de otros elementos.
  • Un renderizador basado en la API de gráficos Vulkan que implementa sombreadores para muchos de los elementos CSS que consumen muchos recursos y se utilizan en los widgets GTK.
  • integración GSK (GTK Scene Kit) con la capacidad de renderizar escenas gráficas a través de OpenGL y Vulkan.
  • Se ha revisado la organización del renderizado: en lugar de enviarlo a un búfer, ahora se utiliza un modelo basado en nodos de renderizado, en el que el resultado se organiza en forma de un árbol de operaciones de alto nivel, procesadas eficientemente por la GPU utilizando OpenGL. y Vulkán.
  • Los fondos para un manejo flexible de los cambios de enfoque de entrada.
  • Un modelo de entrega de eventos modernizado que elimina la necesidad de subventanas al enrutar eventos de entrada. La necesidad de implementar un nuevo modelo está asociada con un uso más activo de los efectos de animación, cuya representación debe realizarse sin cambiar el diseño de los elementos visibles y, en consecuencia, sin una subventana.
  • La API de GDK se ha rediseñado con miras a utilizar el protocolo Wayland y conceptos relacionados. Las funciones basadas en X11 y Wayland se han trasladado a backends separados.
  • Se ha llevado a cabo una limpieza importante de la API, incluida la eliminación de las clases GtkMenu, GtkMenuBar y GtkToolbar, en favor de GMenu y opciones basadas en menús emergentes.
  • GtkTextView y otros widgets de entrada tienen una pila de deshacer incorporada.
  • Se agregó una nueva clase GtkNative para widgets que tienen su propia superficie de visualización y pueden funcionar por separado en el primer nivel, sin estar vinculados a los widgets principales.
  • Se han agregado nuevos widgets, incluidos GtkPicture, GtkText, GtkPasswordEntry, GtkListView, GtkGridView, GtkColumnView y un widget de visualización de Emoji.
  • Para el desarrollo de widgets se introduce un nuevo objeto GtkLayoutManager con la implementación de un sistema de control de la disposición de elementos en función del tamaño del área visible. GtkLayoutManager reemplaza las propiedades secundarias en contenedores GTK como GtkBox y GtkGrid.
  • El manejo de eventos se ha simplificado y ahora se usa solo para entrada. Los eventos restantes se reemplazan con señales separadas, por ejemplo, en lugar de eventos de salida, se ofrece la señal "GdkSurface::render", y en lugar de eventos de configuración, se ofrece "GdkSurface::size-changed".
  • Se agregó una nueva capa de abstracción, GdkPaintable, que representa objetos que se pueden dibujar en cualquier lugar y en cualquier tamaño, sin la necesidad de ordenar las capas de diseño.
  • El backend de Broadway se ha reescrito para permitir que la salida de la biblioteca GTK se represente en una ventana del navegador web.
  • Se ha rediseñado la API asociada con la realización de operaciones de arrastrar y soltar, incluidos los objetos GdkDrag y GdkDrop separados propuestos.

Mejoras en comparación con la versión de prueba anterior:

  • Se eliminó la antigua implementación de la API de Accesibilidad para personas con discapacidad y se reemplazó por una nueva versión basada en la especificación. AIRE y el widget GtkAccessible.
  • Se agregó soporte para etiquetas editables (GtkEditableLabel).
  • Se han propuesto nuevos modelos de listas para mostrar marcadores (GtkBookmarkList), cadenas (GtkStringList) y bloques de selección (GtkBitset).
  • El widget GtkTreeView tiene la capacidad de editar celdas.
  • Se ha mejorado la implementación del desplazamiento en GtkGridView y GtkListView, y se ha agregado soporte para el desplazamiento y la expansión automática.
  • GtkWidget acelera significativamente el procesamiento de diversas acciones.
  • Se agregó soporte para desplazamiento y filtrado incremental a GtkFilterListModel y GtkSortListModel.
  • Inspector ha agregado soporte para inspeccionar modelos de listas y la capacidad de navegar directamente entre objetos.
  • En GDK, se guardó el historial de desplazamiento, se limpió la API de GdkDevice y se detuvo la separación de dispositivos en maestro y esclavo.
  • Se agregó un nuevo backend GDK para macOS.
  • Un nuevo backend de renderizado GDK basado en ÁNGULO, capas intermedias para traducir llamadas de OpenGL ES a OpenGL, Direct3D 9/11, Desktop GL y Vulkan.

Fuente: opennet.ru

Añadir un comentario