The release of GTK 3.99.0 marked the readiness of functionality planned for GTK 4.

Published final experimental release of the framework GTK 3.99.0, which implements all features planned for GTK 4. The GTK 4 branch is evolving within a new development process that aims to provide application developers with a stable API supported for several years, avoiding the need to overhaul applications every six months due to API changes in the next GTK branch. The GTK 4 release is planned to be out by the end of the year.

Among the most significant the changes downward API support (simultaneously with this in GTK 4 notable mentions include:

  • Constraint-based layout method (constraint layout), where the position and size of child elements are determined based on the distance to the edges and the sizes of other elements.
  • Rendering module based on the Vulkan graphics API, featuring shaders for many resource-intensive CSS elements used in GTK widgets.
  • Integration GSK (GTK Scene Kit) with capabilities for rendering graphic scenes via OpenGL and Vulkan.
  • The rendering organization has been revised — instead of outputting to a buffer, a node-based rendering model is now used, where the output is assembled in the form of a tree of high-level operations efficiently processed by the GPU using OpenGL and Vulkan.
  • Tools for flexible handling of input focus changes.
  • An upgraded event delivery model that allows bypassing subwindows during input event routing. The need for this new model arises from the increased use of animation effects, whose rendering must occur without altering the layout of visible elements and thus without using subwindows.
  • The GDK API has been redesigned with consideration for utilizing the Wayland protocol and associated concepts. Features linked to X11 and Wayland have been moved to separate backends.
  • A significant API cleanup has been conducted, including the removal of GtkMenu, GtkMenuBar, and GtkToolbar classes, which have been replaced with GMenu and variants based on pop-up menus (popover).
  • In GtkTextView and other input widgets, a stack for undoing changes has been integrated.
  • A new GtkNative class has been added for widgets that have their own display surface and can operate independently at the top level, without being tied to parent widgets.
  • New widgets have been introduced, including GtkPicture, GtkText, GtkPasswordEntry, GtkListView, GtkGridView, GtkColumnView, as well as a widget for displaying Emoji.
  • A new object GtkLayoutManager has been introduced for widget development, implementing a layout management system based on the size of the visible area. GtkLayoutManager replaces the child properties in GTK containers, such as GtkBox and GtkGrid.
  • Event handling has been simplified, now only used for input. Other events have been replaced with separate signals; for example, instead of output events, the signal 'GdkSurface::render' is proposed, and for size adjustment events — 'GdkSurface::size-changed'.
  • A new level of abstraction, GdkPaintable, has been added, representing objects that can be drawn anywhere at any size without the need to perform layout layer sorting.
  • The Broadway backend has been rewritten, allowing GTK library output to be rendered in a web browser window.
  • The API related to Drag-and-Drop operations has been redesigned, including separate GdkDrag and GdkDrop objects.

Improvements over the previous test release:

  • The old Accessibility API for people with disabilities has been removed, replaced by a new variant based on the ARIA specification. ARIA and the GtkAccessible widget.
  • Support for editable labels (GtkEditableLabel) has been added.
  • New list models for displaying bookmarks (GtkBookmarkList), strings (GtkStringList), and selection blocks (GtkBitset) have been introduced.
  • The GtkTreeView widget has implemented the ability to edit cells.
  • In GtkGridView and GtkListView, scrolling implementation has been improved, with support for auto-scrolling and auto-expansion added.
  • Processing of various actions has been significantly accelerated in GtkWidget.
  • Incremental scrolling and filtering support have been added to GtkFilterListModel and GtkSortListModel.
  • The Inspector now supports inspecting list models and provides direct navigation between objects.
  • In GDK, scrolling history preservation has been ensured, GdkDevice API has been cleansed, and the division of devices into master and slave has been discontinued.
  • A new GDK backend for macOS has been added.
  • For Windows, a new rendering GDK backend based on OpenGL ES translation to OpenGL, Direct3D 9/11, Desktop GL, and Vulkan has been proposed. ANGLE, layers The final experimental release of the framework has been published.

Source: opennet.ru

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