GTK 3.96 has been released, an experimental version of GTK 4

After 10 months from the previous test release introduced GTK 3.96, the new experimental release for the upcoming stable GTK 4. The GTK 4 branch is being developed within a new development process that aims to provide application developers with a stable API supported for several years, mitigating the need to redesign applications every six months due to API changes in each GTK branch. Until GTK 4 is fully stabilized, applications offered to users are recommended to continue being built using the GTK 3.24.

Key changes in GTK 3.96:

  • In the API GSK (GTK Scene Kit), which provides rendering of graphical scenes through OpenGL and Vulkan, has undergone bug fixes, making it easier to identify issues thanks to a new debugging tool called gtk4-node-editor, which allows loading and displaying rendering nodes in a serialized format (can be saved in GTK inspector in inspect mode) and comparing rendering results when using different backends;

    GTK 3.96 has been released, an experimental version of GTK 4
  • 3D transformation capabilities have been enhanced to create animation effects such as a spinning cube;

    GTK 3.96 has been released, an experimental version of GTK 4
  • Fully rewritten The GDK backend Broadway, designed to render the output of the GTK library in a web browser window. The old Broadway implementation did not fit into the rendering methods proposed in GTK 4 (instead of outputting to a buffer, a node-based rendering model is now used, where the output is composed in the form of a tree of high-level operations efficiently processed by the GPU using OpenGL and Vulkan).
    The new Broadway variant converts rendering nodes into DOM nodes with CSS styles for interface output in the browser. Each new screen state is handled as a change in the DOM tree relative to the previous state, allowing for a reduction in the size of data sent to the remote client. 3D transformations and graphical effects are implemented through the CSS property transform;
  • The implementation of APIs designed with consideration for the use of the Wayland protocol continues in GDK, along with the cleaning up of APIs tied to X11, or their relocation to a separate X11 backend. Progress is noted in the work to eliminate the use of child surfaces and global coordinates. Support for GDK_SURFACE_SUBSURFACE has been removed from GDK.
  • Code refactoring related to the execution of Drag-and-Drop operations has been continued, including the introduction of separate objects GdkDrag and GdkDrop.
  • Event handling has been simplified, with events now being used only for input. Other events have been replaced with separate signals; for example, instead of output events, the signal "GdkSurface::render" has been proposed, instead of configuration events — "GdkSurface::size-changed", instead of mapping events — "GdkSurface::mapped", and instead of gdk_event_handler_set() — "GdkSurface::event".
  • Support for the portal interface to access GtkSettings has been added to the GDK backend for Wayland. The support for input methods has been proposed with an extension of the text-input-unstable-v3 protocol.
  • A new object GtkLayoutManager has been introduced for widget development, implementing a system for managing the layout of elements based on the visible area's size. GtkLayoutManager replaces child properties in GTK containers, such as GtkBox and GtkGrid. Several ready-to-use layout managers have been proposed: GtkBinLayout for simple containers with a single child element, GtkBoxLayout for linearly aligned child elements, GtkGridLayout for aligning child elements in a grid, GtkFixedLayout for arbitrary positioning of child elements, and GtkCustomLayout for translating traditional elements based on size_allocate handlers.
  • Publicly accessible objects for the page output of child elements have been added to the GtkAssistant, GtkStack, and GtkNotebook widgets, which have translated the properties of these widgets unrelated to layout. As all existing child properties have been transformed into standard properties, layout properties or those moved to page objects, the support for child properties has been completely removed from GtkContainer.
  • The basic functionality of GtkEntry has been moved to a new widget GtkText, which also includes an extended editing interface GtkEditable. All existing data entry subclasses have been redesigned in the form of GtkEditable implementations based on the new GtkText widget.
  • A new GtkPasswordEntry widget has been added for password input forms;
  • GtkWidgets now support transforming child elements using linear transformation methods defined through CSS or the gtk_widget_allocate argument in GskTransform. This feature has already been applied in the GtkFixed widget;
  • New list models have been added: GtkMapListModel, GtkSliceListModel, GtkSortListModel, GtkSelectionModel, and GtkSingleSelection. Support for list models in GtkListView is planned for the future;
  • GtkBuilder now allows properties of objects to be set inline, instead of using references by ID;
  • The gtk4-builder-tool now includes a command to convert UI files from GTK 3 to GTK 4;
  • Support for key themes, tabular menus, and combo boxes has been discontinued. The GtkInvisible widget has been removed.

    Source: opennet.ru

Buy reliable website hosting with DDoS protection, VPS VDS servers 🔥 Buy reliable website hosting with DDoS protection, VPS VDS servers | ProHoster