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

10 meses después el pasado lanzamiento de prueba presentado GTK 3.96, una nueva versión experimental de la próxima versión estable 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 se pueda utilizar sin miedo. de tener que reescribir la aplicación cada seis meses debido al cambio de API en la próxima rama de GTK. Hasta que GTK 4 esté completamente estabilizado, se recomienda que las aplicaciones ofrecidas a los usuarios sigan creándose utilizando la rama GTK 3.24.

El principal cambios en GTK 3.96:

  • En la API GSK (GTK Scene Kit), que proporciona renderizado de escenas gráficas a través de OpenGL y Vulkan, se ha trabajado en los errores, que se han vuelto más fáciles de identificar gracias a la nueva herramienta de depuración gtk4-node-editor, que permite cargar y mostrar el nodo de renderizado en formato serializado (se puede guardar en el modo de inspección del inspector GTK) y también comparar los resultados del renderizado cuando se utilizan diferentes backends;

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

  • Las capacidades de transformación 3D se han llevado a un nivel que le permite crear efectos de animación como un cubo giratorio;

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

  • Completamente reescrito Backend de Broadway GDK diseñado para representar la salida de la biblioteca GTK en una ventana del navegador web. La antigua implementación de Broadway no encajaba en los métodos de renderizado propuestos en GTK 4 (en lugar de generar salida a un buffer, ahora usa un modelo basado en nodos de renderizado, donde la salida se compone en forma de un árbol de operaciones de alto nivel, procesado eficientemente por la GPU usando OpenGL y Vulkan).
    La nueva opción Broadway convierte los nodos de renderizado en nodos DOM con estilos CSS para renderizar la interfaz en el navegador. Cada nuevo estado de pantalla se procesa como un cambio en el árbol DOM en relación con el estado anterior, lo que reduce el tamaño de los datos transmitidos al cliente remoto. Las transformaciones 3D y los efectos gráficos se implementan mediante la propiedad de transformación CSS;

  • GDK continúa implementando API diseñadas con el protocolo Wayland en mente y limpia las API basadas en X11 o las mueve a un backend X11 separado. Hay avances en el trabajo para alejarse del uso de superficies secundarias y coordenadas globales. Se eliminó la compatibilidad con GDK_SURFACE_SUBSURFACE de GDK;
  • Continuó la refactorización del código asociado con la realización de operaciones de arrastrar y soltar, incluidos los objetos GdkDrag y GdkDrop separados propuestos;
  • 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 propone la señal "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";
  • El backend de GDK para Wayland ha agregado soporte para una interfaz de portal para acceder a la configuración de GtkSettings. Para trabajar con métodos de entrada, se ha propuesto soporte para la extensión del protocolo text-input-inestable-v3;
  • 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 de la disposición del área visible. GtkLayoutManager reemplaza las propiedades secundarias en contenedores GTK como GtkBox y GtkGrid. Se proponen varios administradores de diseño listos para usar: GtkBinLayout para contenedores simples con un elemento secundario, GtkBoxLayout para elementos secundarios alineados linealmente, GtkGridLayout para alinear elementos secundarios a una cuadrícula, GtkFixedLayout para posicionamiento arbitrario de elementos secundarios, GtkCustomLayout para traducir elementos tradicionales basados ​​en size_allocate manipuladores;
  • Se han agregado objetos de acceso público para la visualización de páginas de elementos secundarios a los widgets GtkAssistant, GtkStack y GtkNotebook, a los que se transfieren las propiedades secundarias de estos widgets no relacionadas con el diseño. Dado que todas las propiedades secundarias existentes se convirtieron en propiedades normales, propiedades de diseño o se movieron a objetos de página, la compatibilidad con propiedades secundarias se eliminó por completo de GtkContainer;
  • La funcionalidad principal de GtkEntry se ha trasladado a un nuevo widget GtkText, que también incluye una interfaz de edición GtkEditable mejorada. Todas las subclases de entrada de datos existentes se han rehecho como implementaciones GtkEditable basadas en el nuevo widget GtkText;
  • Se agregó un nuevo widget GtkPasswordEntry para formularios de ingreso de contraseñas;
  • GtkWidgets ha agregado la capacidad de transformar elementos secundarios utilizando métodos de transformación lineal especificados mediante CSS o el argumento gtk_widget_allocate a GskTransform. La característica especificada ya está aplicada en el widget GtkFixed;
  • Se han agregado nuevos modelos de generación de listas: GtkMapListModel, GtkSliceListModel, GtkSortListModel, GtkSelectionModel y GtkSingleSelection. En el futuro planeamos agregar soporte para modelos de lista a GtkListView;
  • GtkBuilder ha agregado la capacidad de establecer propiedades de objetos localmente (en línea), en lugar de usar enlaces por identificador;
  • Se agregó un comando a gtk4-builder-tool para convertir archivos UI de GTK 3 a GTK 4;
  • Se ha interrumpido la compatibilidad con temas clave, menús tabulares y cuadros combinados. Se ha eliminado el widget GtkInvisible.

    Fuente: opennet.ru

Añadir un comentario