El lanzamiento de GTK 3.99.0 marcó la disponibilidad de las funcionalidades previstas para GTK 4

Publicado versión experimental final del marco GTK 3.99.0, en la que se han implementado todas las funcionalidades planificadas para GTK 4. La rama GTK 4 se desarrolla dentro de un nuevo proceso de desarrollo que intenta proporcionar a los desarrolladores de aplicaciones una API estable y mantenible durante varios años, que se pueda usar sin temor a tener que rehacer las aplicaciones cada seis meses debido a cambios en la API en otra rama de GTK. Se planea lanzar GTK 4 antes de fin de año.

Entre los más significativos cambios en GTK 4 se pueden destacar:

  • Método de disposición de elementos basado en restricciones (constraint layout), donde 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.
  • Módulo de renderizado basado en la API gráfica Vulkan, que implementa sombreadores para muchos elementos de CSS que consumen muchos recursos, aplicados en los widgets de GTK.
  • Integración GSK (GTK Scene Kit) con capacidades para renderizar escenas gráficas a través de OpenGL y Vulkan.
  • Se ha revisado la organización del renderizado: en lugar de salida a un búfer, ahora se aplica un modelo basado en nodos de renderizado (render nodes), donde la salida se compone en forma de árbol de operaciones de alto nivel, procesadas de manera eficiente por la GPU mediante OpenGL y Vulkan.
  • Herramientas para un manejo flexible del cambio de enfoque de entrada.
  • Modelo de entrega de eventos modernizado que permite prescindir de subventanas al enrutar eventos de entrada. La necesidad de implementar un nuevo modelo está relacionada con el uso más activo de efectos de animación, cuya representación debe llevarse a cabo sin cambiar la disposición de los elementos visibles y, en consecuencia, sin subventanas.
  • API de GDK rediseñada teniendo en cuenta el uso del protocolo Wayland y conceptos relacionados. Las funcionalidades asociadas con X11 y Wayland se han trasladado a módulos backend separados.
  • Se ha realizado una gran limpieza de la API, eliminando clases como GtkMenu, GtkMenuBar y GtkToolbar, que han sido reemplazadas por GMenu y variantes basadas en menús emergentes (popover).
  • En GtkTextView y otros widgets de entrada se ha integrado una pila para deshacer cambios (undo).
  • Se ha añadido una nueva clase GtkNative para widgets que tienen su propia superficie de visualización y capaces de trabajar de forma independiente en el primer nivel, sin atarse a widgets padres.
  • Se han añadido nuevos widgets, incluyendo GtkPicture, GtkText, GtkPasswordEntry, GtkListView, GtkGridView, GtkColumnView, así como un widget para mostrar Emoji.
  • Para el desarrollo de widgets, se presenta un nuevo objeto GtkLayoutManager que implementa un sistema de gestión de la distribución de elementos según el tamaño del área visible. GtkLayoutManager reemplaza a las propiedades hijas en los contenedores GTK, como GtkBox y GtkGrid.
  • Se ha simplificado el manejo de eventos, que ahora solo se utilizan para la entrada. Los demás eventos han sido reemplazados por señales separadas, por ejemplo, en lugar de eventos de salida se propone la señal «GdkSurface::render», y en lugar de eventos de configuración — «GdkSurface::size-changed».
  • Se ha añadido un nuevo nivel de abstracción GdkPaintable, que representa objetos que se pueden dibujar en cualquier lugar con cualquier tamaño, sin necesidad de realizar la ordenación de capas de diseño.
  • Se ha reescrito el backend de Broadway, que permite renderizar la salida de la biblioteca GTK en una ventana del navegador web.
  • Se ha reforzado la API relacionada con la ejecución de operaciones de arrastrar y soltar, incluyendo objetos GdkDrag y GdkDrop separados.

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

  • Se ha eliminado la antigua implementación de la API de accesibilidad para personas con discapacidad, que ha sido reemplazada por una nueva opción basada en la especificación ARIA y el widget GtkAccessible.
  • Se ha añadido soporte para etiquetas editables (GtkEditableLabel).
  • Se han propuesto nuevos modelos de listas para mostrar marcadores (GtkBookmarkList), cadenas (GtkStringList) y bloques de selección (GtkBitset).
  • En el widget GtkTreeView se implementó la capacidad de editar celdas.
  • En GtkGridView y GtkListView se ha mejorado la implementación del desplazamiento, añadiendo soporte para autodesplazamiento y autorrollo.
  • En GtkWidget se ha acelerado significativamente el procesamiento de diversas acciones.
  • En GtkFilterListModel y GtkSortListModel se ha añadido soporte para desplazamiento incremental y filtrado.
  • En el Inspector se ha añadido soporte para inspeccionar modelos de listas y la posibilidad de navegación directa entre objetos.
  • En GDK se ha asegurado el guardado del historial de desplazamiento, se ha limpiado la API de GdkDevice, y se ha detenido la división de dispositivos en maestro y esclavo.
  • Se ha añadido un nuevo backend de GDK para macOS.
  • Para Windows se ha propuesto un nuevo backend de GDK de renderizado basado en ANGLE, capa para la traducción de llamadas OpenGL ES a OpenGL, Direct3D 9/11, Desktop GL y Vulkan.

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster