GTK 3.96 veröffentlicht, experimentelle Version von GTK 4

Nach 10 Monaten seit dem Letzten Testrelease vorgestellt GTK 3.96, gab es ein neues experimentelles Release der zukünftigen stabilen Version GTK 4. Der GTK 4-Zweig entwickelt sich im Rahmen eines neuen Entwicklungsprozesses, der den Anwendungsentwicklern eine stabile und über mehrere Jahre unterstützte API zur Verfügung stellen möchte, die verwendet werden kann, ohne die Angst haben zu müssen, dass alle sechs Monate die Anwendung aufgrund von API-Änderungen im neuesten GTK-Zweig neu geschrieben werden muss. Bis zur vollständigen Stabilisierung von GTK 4 wird geraten, dass Anwendungen, die den Nutzern angeboten werden, weiterhin mit dem Zweig GTK 3.24.

Haupt- Änderungen in GTK 3.96:

  • Im API GSK (GTK Scene Kit), das die Grafikdarstellung von Szenen über OpenGL und Vulkan ermöglicht, wurde an Fehlern gearbeitet, die jetzt dank des neuen Debugging-Tools gtk4-node-editor leichter zu identifizieren sind, das es ermöglicht, einen Rendering-Knoten im serialisierten Format zu laden und anzuzeigen (kann im Inspektionsmodus des GTK-Inspektors gespeichert werden) und auch das Rendering-Ergebnis bei der Anwendung verschiedener Backend-Systeme zu vergleichen;

    GTK 3.96 veröffentlicht, experimentelle Version von GTK 4
  • Die Möglichkeiten der 3D-Transformationen wurden auf ein Niveau angehoben, das die Erstellung von Animationseffekten wie einem sich drehenden Würfel ermöglicht;

    GTK 3.96 veröffentlicht, experimentelle Version von GTK 4
  • entfernt wurde neu geschrieben Der GDK-Backend Broadway, der zur Darstellung des GTK-Bibliotheksausgangs in einem Webbrowser-Fenster gedacht ist. Die alte Broadway-Implementierung passte nicht zu den in GTK 4 vorgeschlagenen Rendering-Methoden (anstatt der Ausgabe in einen Puffer wird jetzt ein model basiertes auf Rendering-Knoten verwendet, wobei die Ausgabe in Form eines Baumes von hochrangigen Operationen organisiert ist, die effizient von der GPU mit OpenGL und Vulkan verarbeitet werden).
    Die neue Variante von Broadway wandelt Rendering-Knoten in DOM-Knoten mit CSS-Styles zur Darstellung der Benutzeroberfläche im Browser um. Jedes neue Bildschirmzustands wird als Änderung des DOM-Baums im Vergleich zum vorherigen Zustand behandelt, was die Datenmenge reduziert, die an den Remote-Client übermittelt wird. 3D-Transformationen und grafische Effekte werden über die CSS-Eigenschaft transform realisiert;
  • In GDK wird die Implementierung von APIs fortgesetzt, die auf die Nutzung des Wayland-Protokolls ausgerichtet sind, und eine Säuberung von APIs vorgenommen, die an X11 gebunden sind, oder sie werden in ein separates X11-Backend verschoben. Es wird Fortschritt beim Entfernen von untergeordneten Oberflächen und globalen Koordinaten verzeichnet. Die Unterstützung von GDK_SURFACE_SUBSURFACE wurde aus GDK entfernt;
  • Die Code-Refaktorisierung, die mit Drag-and-Drop-Operationen verbunden ist, wurde fortgesetzt, einschließlich der Einführung separater Objekte GdkDrag und GdkDrop;
  • Die Verarbeitung von Ereignissen wurde vereinfacht, die jetzt nur für die Eingabe verwendet werden. Andere Ereignisse wurden durch separate Signale ersetzt, beispielsweise wurde das Signal „GdkSurface::render“ anstelle von Ausgabesignalen vorgeschlagen, „GdkSurface::size-changed“ anstelle von Anpassungsereignissen, „GdkSurface::mapped“ anstelle von Zuordnungsereignissen und „GdkSurface::event“ anstelle von gdk_event_handler_set();
  • Im GDK-Backend für Wayland wurde die Unterstützung für das Portal-Interface zum Zugriff auf die Einstellungen von GtkSettings hinzugefügt. Für die Arbeit mit Eingabemethoden wurde die Unterstützung für die Erweiterung des Protokolls text-input-unstable-v3 vorgeschlagen;
  • Für die Entwicklung von Widgets wurde ein neues Objekt GtkLayoutManager eingeführt, das ein System zur Verwaltung der Elementanordnung abhängig von der Sichtbarkeit des Bereichs implementiert. GtkLayoutManager ersetzt die Kindereigenschaften in GTK-Containern wie GtkBox und GtkGrid. Mehrere vordefinierte Layout-Manager wurden vorgeschlagen: GtkBinLayout für einfache Container mit einem Kind-Element, GtkBoxLayout für linear ausgerichtete Kind-Elemente, GtkGridLayout für die Ausrichtung der Kind-Elemente in einem Raster, GtkFixedLayout für die beliebige Positionierung von Kind-Elementen, GtkCustomLayout für die Übersetzung traditioneller Elemente auf der Grundlage von size_allocate-Handlern;
  • In die Widgets GtkAssistant, GtkStack und GtkNotebook wurden öffentlich zugängliche Objekte für die seitenweise Ausgabe von Kind-Elementen hinzugefügt, auf die nicht mit der Anordnung (Layout) verbundenen Eigenschaften der Daten-Widgets übertragen wurden. Da alle vorhandenen Kind-Eigenschaften in normale Eigenschaften umgewandelt wurden, wurden die Layout-Eigenschaften entweder in die Seitenobjekte verschoben, und die Unterstützung für Kind-Eigenschaften wurde vollständig aus GtkContainer entfernt;
  • Die Grundfunktionalität von GtkEntry wurde in das neue Widget GtkText verschoben, das auch eine erweiterte Editing-Schnittstelle GtkEditable umfasst. Alle bestehenden Unterklassen der Dateneingabe wurden in Form von Implementierungen von GtkEditable auf Basis des neuen Widgets GtkText umgestaltet;
  • Ein neues Widget GtkPasswordEntry wurde für Passwort-Eingabemasken hinzugefügt;
  • In GtkWidgets wurde die Möglichkeit hinzugefügt, Kind-Elemente mithilfe von Methoden zur linearen Transformation zu konvertieren, die über CSS oder das Argument gtk_widget_allocate in GskTransform festgelegt werden. Diese Möglichkeit wurde bereits im Widget GtkFixed angewendet;
  • Neue Modelltypen zur Erstellung von Listen wurden hinzugefügt: GtkMapListModel, GtkSliceListModel, GtkSortListModel, GtkSelectionModel und GtkSingleSelection. Zukünftig ist geplant, die Unterstützung für Listenmodelle in GtkListView zu integrieren.
  • In GtkBuilder wurde die Möglichkeit hinzugefügt, Eigenschaften von Objekten inline festzulegen, anstatt Identifikatoren zu verwenden.
  • In gtk4-builder-tool wurde ein Befehl hinzugefügt, um UI-Dateien von GTK 3 nach GTK 4 zu konvertieren.
  • Die Unterstützung für Schlüsselschema (key theme), Tab-Menüs (tabular menu) und Kombinationsfelder (combo box) wurde eingestellt. Das Widget GtkInvisible wurde entfernt.

    Quelle: opennet.ru

60GB SSD 8Gb DDR4