Die Veröffentlichung von GTK 3.99.0 markierte die Fertigstellung der für GTK 4 geplanten Funktionalitäten.

Veröffentlicht letzte experimentelle Version des Frameworks GTK 3.99.0, in der alle geplanten Funktionen für GTK 4 implementiert sind. Der GTK 4-Zweig entwickelt sich im Rahmen eines neuen Entwicklungsprozesses, der darauf abzielt, Entwicklern eine stabile, über mehrere Jahre unterstützte API zu bieten, die ohne Bedenken genutzt werden kann, ohne dass alle sechs Monate Anpassungen am API aufgrund von Änderungen im nächsten GTK-Zweig erforderlich sind. Die Veröffentlichung von GTK 4 ist für Ende des Jahres geplant.

Unter den wichtigsten wesentlichen Änderungen in GTK 4 gehören:

  • Layout-Methode basierend auf Einschränkungen (constraint layout), bei der die Position und Größe der untergeordneten Elemente anhand der Abstände zu den Rändern und der Größe anderer Elemente bestimmt wird.
  • Rendering-Modul auf Basis der Grafik-API Vulkan, in dem Shaders für viele ressourcenintensive CSS-Elemente implementiert sind, die in GTK-Widgets verwendet werden.
  • Integration GSK (GTK Scene Kit) mit Rendering-Funktionen für grafische Szenen über OpenGL und Vulkan.
  • Die Rendering-Organisation wurde überarbeitet — anstelle der Ausgabe in einen Puffer wird jetzt ein Modell auf Basis von Rendering-Knoten (render nodes) verwendet, bei dem die Ausgabe in Form eines Baums hochgradiger Operationen kompaktiert wird, die vom GPU effektiv mit OpenGL und Vulkan verarbeitet werden.
  • Werkzeuge für eine flexible Handhabung von Änderungen im Eingabefokus.
  • Modernisiertes Ereignisliefermodell, das die Verwendung von Subfenstern bei der Routenführung von Eingabeereignissen überflüssig macht. Die Notwendigkeit für ein neues Modell ergibt sich aus der vermehrten Nutzung von Animationseffekten, deren Rendering ohne Veränderung des Layouts sichtbarer Elemente und damit ohne Subfenster erfolgen muss.
  • Die GDK-API wurde überarbeitet unter Berücksichtigung des Wayland-Protokolls und verwandter Konzepte. X11- und Wayland-bezogene Funktionen wurden in separate Backends.
  • ausgelagert. Eine umfassende Bereinigung der API wurde durchgeführt, einschließlich der Entfernung der Klassen GtkMenu, GtkMenuBar und GtkToolbar, die durch GMenu und Varianten auf Basis von Popup-Menüs (popover) ersetzt wurden.
  • In GtkTextView und anderen Eingabe-Widgets wurde ein Stack für Rückgängig-Änderungen (undo) integriert.
  • Eine neue Klasse GtkNative für Widgets, die ihre eigene Anzeigeoberfläche haben und unabhängig auf der obersten Ebene arbeiten können, wurde hinzugefügt, ohne an übergeordnete Widgets gebunden zu sein.
  • Neue Widgets wurden hinzugefügt, darunter GtkPicture, GtkText, GtkPasswordEntry, GtkListView, GtkGridView, GtkColumnView sowie ein Widget zur Anzeige von Emojis.
  • Für die Widget-Entwicklung wurde ein neues Objekt GtkLayoutManager mit einer Systemimplementierung zur Verwaltung von Layouts je nach Größe des sichtbaren Bereichs vorgestellt. GtkLayoutManager ersetzt die untergeordneten Eigenschaften in GTK-Containern wie GtkBox und GtkGrid.
  • Die Ereignisverarbeitung wurde vereinfacht, die jetzt nur noch für Eingaben verwendet wird. Andere Ereignisse wurden durch separate Signale ersetzt, z.B. wurde das Ausgabesignal durch das Signal „GdkSurface::render“ ersetzt, das Anhaltssignal durch „GdkSurface::size-changed“.
  • Eine neue Abstraktionsebene GdkPaintable wurde hinzugefügt, die Objekte repräsentiert, die überall mit beliebiger Größe gezeichnet werden können, ohne dass eine Sortierung der Layout-Schichten erforderlich ist.
  • Der Broadway-Backend wurde neu geschrieben, um die Ausgabe der GTK-Bibliothek in einem Webbrowserfenster darzustellen.
  • Die API, die mit Drag-and-Drop-Operationen verbunden ist, wurde überarbeitet, darunter separate Objekte GdkDrag und GdkDrop.

Verbesserungen im Vergleich zur vorherigen Testversion:

  • Die alte Implementierung der Accessibility-API für Menschen mit Behinderungen wurde entfernt und durch eine neue Version basierend auf der Spezifikation ARIA und dem Widget GtkAccessible ersetzt.
  • Unterstützung für bearbeitbare Labels (GtkEditableLabel) wurde hinzugefügt.
  • Neue Listenmodelle für die Anzeige von Lesezeichen (GtkBookmarkList), Zeilen (GtkStringList) und Auswahlblöcken (GtkBitset) wurden vorgeschlagen.
  • Im GtkTreeView wurde die Möglichkeit zur Bearbeitung von Zellen implementiert.
  • In GtkGridView und GtkListView wurde die Implementierung des Scrollens verbessert, Unterstützung für automatisches Scrollen und automatische Ausblendung hinzugefügt.
  • In GtkWidget wurde die Verarbeitung verschiedener Aktionen deutlich beschleunigt.
  • In GtkFilterListModel und GtkSortListModel wurde Unterstützung für inkrementelles Scrollen und Filtern hinzugefügt.
  • Im Inspector wurde die Unterstützung zur Inspektion von Listenmodellen und die Möglichkeit der direkten Navigation zwischen Objekten hinzugefügt.
  • Im GDK wurde die Historie des Scrollens gespeichert, die API GdkDevice wurde bereinigt, die Aufteilung der Geräte in Master und Slave wurde eingestellt.
  • Ein neuer GDK-Backend für macOS wurde hinzugefügt.
  • Für Windows wurde ein neuer GDK-Rendering-Backend auf Basis von ANGLE, Schichten zur Übersetzung von OpenGL ES-Aufrufen in OpenGL, Direct3D 9/11, Desktop GL und Vulkan vorgeschlagen.

Quelle: opennet.ru

Erwerben Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster