La version final de GTK 3.99 ya fue liberada y en ella llegan diversas implementaciones que van encaminadas a las mejoras que se ofrecerán dentro de 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 puede usarse sin temor que cada seis meses tendrá que rehacer aplicaciones debido a cambios en la API en la próxima version de GTK.
¿Qué hay de nuevo en GTK 3.99?
En esta nueva version liberada de GTK 3.99 se eliminó la antigua implementación de la API de accesibilidad para personas con discapacidades y, en su lugar se propuso una nueva versión basada en la especificación ARIA y el widget GtkAccessible.
Para Windows, se ha propuesto un nuevo backend de representación GDK basado en ANGLE, una capa intermedia para traducir las llamadas de OpenGL ES a OpenGL, Direct3D 9/11, Desktop GL y Vulkan. Mientras que para macOS se agregó un nuevo backend GDK.
Otro de los cambios implementados es el soporte para etiquetas editables (GtkEditableLabel), además de que se ha propuesto nuevos modelos de lista para mostrar marcadores (GtkBookmarkList), cadenas (GtkStringList) y cuadros de selección (GtkBitset) y el widget GtkTreeView implementa la capacidad de editar celdas.
De los otros cambios de esta version:
- GtkGridView y GtkListView han mejorado la implementación de desplazamiento, agregado soporte para desplazamiento automático y ocultación automática.
- GtkWidget ha acelerado significativamente el procesamiento de varias acciones.
- Se agregó soporte para desplazamiento incremental y filtrado a GtkFilterListModel y GtkSortListModel.
- El Inspector agrega soporte para inspeccionar modelos de listas y la capacidad de navegar directamente entre objetos.
- En el GDK, se guarda el historial de desplazamiento, se ha limpiado la API GdkDevice, se ha detenido la división de dispositivos en maestro y esclavo.
¿Qué se espera para GTK4?
En cuanto a los cambios que se esperan para GTK4 (que se espera que sea liberado entre octubre y noviembre de este año) es por ejemplo un método de diseño de restricciones, en el que la posició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 módulo de renderizado basado en la API de gráficos Vulkan, que implementa sombreadores para muchos elementos CSS de uso intensivo de recursos utilizados en widgets GTK.
La integración de GSK (GTK Scene Kit) con capacidades de representación de escenas gráficas a través de OpenGL y Vulkan.
Así como también la organización de representación se ha revisado: en lugar de generar un búfer, ahora se utiliza un modelo basado en nodos de representación, en el que la salida se organiza en forma de un árbol de operaciones de alto nivel, procesadas eficientemente por la GPU usando OpenGL y Vulkan.
Un modelo de entrega de eventos modernizado que elimina la necesidad de una subventana 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, que deben representarse sin cambiar el diseño de los elementos visibles y, en consecuencia, sin una subventana.
Se rediseñó la API de GDK para aprovechar el protocolo Wayland y los conceptos relacionados. Se movieron las funciones relacionadas con X11 y Wayland para separar backends.
Para el desarrollo de widgets, se presenta un nuevo objeto GtkLayoutManager con la implementación del sistema de control para el diseño de elementos dependiendo del tamaño del área visible. GtkLayoutManager ha reemplazado las propiedades secundarias en contenedores GTK como GtkBox y GtkGrid.
Manejo simplificado de eventos que ahora solo se usan para entrada. El resto de los eventos se han reemplazado con señales separadas.
Se ha reescrito el backend de Broadway para permitir la representación de la salida de la biblioteca GTK en una ventana del navegador web.
La API relacionada con las operaciones de arrastrar y soltar se ha modificado, incluidos los objetos GdkDrag y GdkDrop propuestos por separado.
Finalmente si estás interesado en conocer mas al respecto sobre lo que espera para GTk4 puedes consultar los detalles en el siguiente enlace.