GTK 3.96, experimentelle Version von GTK 4, veröffentlicht

10 Monate später der Vergangenheit Testversion eingereicht GTK 3.96, eine neue experimentelle Version der kommenden stabilen Version von GTK 4. Der GTK 4-Zweig wird als Teil eines neuen Entwicklungsprozesses entwickelt, der versucht, Anwendungsentwicklern mehrere Jahre lang eine stabile und unterstützte API zur Verfügung zu stellen, die bedenkenlos verwendet werden kann dass die Anwendung alle sechs Monate neu geschrieben werden muss, da sich die API im nächsten GTK-Zweig ändert. Bis GTK 4 vollständig stabilisiert ist, wird empfohlen, dass den Benutzern angebotene Anwendungen weiterhin über den Zweig erstellt werden GTK 3.24.

Haupt- Veränderungen in GTK 3.96:

  • In der API GSK (GTK Scene Kit), das das Rendern von Grafikszenen über OpenGL und Vulkan ermöglicht, wurde an Fehlern gearbeitet, die dank des neuen Debugging-Tools gtk4-node-editor, mit dem Sie das laden und anzeigen können, leichter zu identifizieren sind Rendering-Knoten in einem serialisierten Format (kann im Inspektionsmodus des GTK-Inspektors gespeichert werden) und auch Vergleich der Rendering-Ergebnisse bei Verwendung verschiedener Backends;

    GTK 3.96, experimentelle Version von GTK 4, veröffentlicht

  • Die 3D-Transformationsfunktionen wurden auf ein Niveau gebracht, das es Ihnen ermöglicht, Animationseffekte wie einen rotierenden Würfel zu erstellen;

    GTK 3.96, experimentelle Version von GTK 4, veröffentlicht

  • Voll umgeschrieben Broadway GDK-Backend zum Rendern der GTK-Bibliotheksausgabe in einem Webbrowserfenster. Die alte Broadway-Implementierung passte nicht in die in GTK 4 vorgeschlagenen Rendering-Methoden (anstelle der Ausgabe in einen Puffer wird jetzt ein auf Renderknoten basierendes Modell verwendet, bei dem die Ausgabe in Form eines Baums aus Operationen auf hoher Ebene zusammengesetzt ist). effizient von der GPU mit OpenGL und Vulkan verarbeitet).
    Die neue Broadway-Option konvertiert Renderknoten in DOM-Knoten mit CSS-Stilen zum Rendern der Schnittstelle im Browser. Jeder neue Bildschirmstatus wird als Änderung im DOM-Baum relativ zum vorherigen Status verarbeitet, wodurch die Größe der an den Remote-Client übertragenen Daten reduziert wird. 3D-Transformationen und Grafikeffekte werden über die CSS-Transformationseigenschaft implementiert;

  • GDK implementiert weiterhin APIs, die unter Berücksichtigung des Wayland-Protokolls entwickelt wurden, und bereinigt X11-basierte APIs oder verschiebt sie in ein separates X11-Backend. Es gibt Fortschritte bei der Abkehr von der Verwendung untergeordneter Oberflächen und globaler Koordinaten. Die Unterstützung für GDK_SURFACE_SUBSURFACE wurde aus GDK entfernt;
  • Die Umgestaltung des mit der Durchführung von Drag-and-Drop-Vorgängen verbundenen Codes wurde fortgesetzt, einschließlich der vorgeschlagenen separaten GdkDrag- und GdkDrop-Objekte;
  • Die Ereignisbehandlung wurde vereinfacht und dient nun nur noch der Eingabe. Die übrigen Ereignisse werden durch separate Signale ersetzt, zum Beispiel wird anstelle von Ausgabeereignissen das Signal „GdkSurface::render“ vorgeschlagen, anstelle von Konfigurationsereignissen – „GdkSurface::size-changed“, anstelle von Mapping-Ereignissen – „GdkSurface: :mapped“, statt gdk_event_handler_set() - „GdkSurface::event“;
  • Das GDK-Backend für Wayland hat Unterstützung für eine Portalschnittstelle für den Zugriff auf GtkSettings-Einstellungen hinzugefügt. Um mit Eingabemethoden zu arbeiten, wurde Unterstützung für die Protokollerweiterung text-input-unstable-v3 vorgeschlagen;
  • Für die Entwicklung von Widgets wird ein neues GtkLayoutManager-Objekt mit der Implementierung eines Systems zur Steuerung des Layouts von Elementen in Abhängigkeit vom Layout des sichtbaren Bereichs eingeführt. GtkLayoutManager ersetzt untergeordnete Eigenschaften in GTK-Containern wie GtkBox und GtkGrid. Es werden mehrere vorgefertigte Layout-Manager vorgeschlagen: GtkBinLayout für einfache Container mit einem untergeordneten Element, GtkBoxLayout für linear ausgerichtete untergeordnete Elemente, GtkGridLayout für die Ausrichtung untergeordneter Elemente an einem Raster, GtkFixedLayout für die beliebige Positionierung untergeordneter Elemente, GtkCustomLayout für die Übersetzung traditioneller Elemente basierend auf size_allocate Handler;
  • Den Widgets GtkAssistant, GtkStack und GtkNotebook wurden öffentlich zugängliche Objekte zur Seitendarstellung untergeordneter Elemente hinzugefügt, auf die die nicht-Layout-bezogenen untergeordneten Eigenschaften dieser Widgets übertragen werden. Da alle vorhandenen untergeordneten Eigenschaften in reguläre Eigenschaften oder Layouteigenschaften umgewandelt oder in Seitenobjekte verschoben wurden, wurde die Unterstützung für untergeordnete Eigenschaften vollständig aus GtkContainer entfernt.
  • Die Kernfunktionalität von GtkEntry wurde in ein neues GtkText-Widget verschoben, das auch eine verbesserte GtkEditable-Bearbeitungsoberfläche enthält. Alle vorhandenen Dateneingabe-Unterklassen wurden als GtkEditable-Implementierungen basierend auf dem neuen GtkText-Widget neu erstellt.
  • Ein neues GtkPasswordEntry-Widget für Passworteingabeformulare hinzugefügt;
  • GtkWidgets hat GskTransform die Möglichkeit hinzugefügt, untergeordnete Elemente mithilfe linearer Transformationsmethoden zu transformieren, die über CSS oder das Argument gtk_widget_allocate angegeben werden. Die angegebene Funktion wird bereits im GtkFixed-Widget angewendet;
  • Neue Listengenerierungsmodelle wurden hinzugefügt: GtkMapListModel, GtkSliceListModel, GtkSortListModel, GtkSelectionModel und GtkSingleSelection. In Zukunft planen wir, GtkListView um Unterstützung für Listenmodelle zu erweitern.
  • GtkBuilder hat die Möglichkeit hinzugefügt, Objekteigenschaften lokal (inline) festzulegen, anstatt Links nach Bezeichnern zu verwenden;
  • Befehl zum gtk4-builder-tool hinzugefügt, um UI-Dateien von GTK 3 nach GTK 4 zu konvertieren;
  • Die Unterstützung für Schlüsselthemen, tabellarische Menüs und Kombinationsfelder wurde eingestellt. Das GtkInvisible-Widget wurde entfernt.

    Source: opennet.ru

Kommentar hinzufügen