Wydanie GTK 3.99.0 oznaczało zakończenie funkcjonalności zaplanowanej dla GTK 4
opublikowany ostateczna eksperymentalna wersja frameworka GTK 3.99.0, który implementuje wszystkie funkcje zaplanowane dla GTK 4. Gałąź GTK 4 jest rozwijana w ramach nowego procesu rozwojowego, który ma na celu zapewnienie twórcom aplikacji stabilnego i wspieranego API na kilka lat, z którego można korzystać bez obawy konieczności przepisywać aplikacje co pół roku ze względu na zmiany API w kolejnej gałęzi GTK. Premiera GTK 4 planowana jest przed końcem roku.
Metoda układania elementów w oparciu o wiązania (układ ograniczeń), w którym położenie i rozmiar elementów podrzędnych określa się na podstawie odległości do granic i wielkości pozostałych elementów.
Moduł renderujący oparty na interfejsie API grafiki Vulkan, który implementuje moduły cieniujące dla wielu elementów CSS wymagających dużych zasobów, używanych w widżetach GTK.
integracja GSK (GTK Scene Kit) z możliwością renderowania scen graficznych poprzez OpenGL i Vulkan.
Zmieniono organizację renderowania - zamiast wyjścia do bufora zastosowano teraz model oparty na węzłach renderowania, w którym wyjście ułożone jest w formie drzewa operacji wysokiego poziomu, wydajnie przetwarzanych przez GPU przy użyciu OpenGL i Vulkan.
Znaczy dla elastycznej obsługi zmian fokusu wejściowego.
Zmodernizowany model dostarczania zdarzeń, który eliminuje potrzebę stosowania podokien podczas kierowania zdarzeń wejściowych. Konieczność wdrożenia nowego modelu wiąże się z bardziej aktywnym wykorzystaniem efektów animacji, których renderowanie powinno odbywać się bez zmiany układu widocznych elementów, a zatem bez podokna.
Interfejs API GDK został przeprojektowany z myślą o wykorzystaniu protokołu Wayland i powiązanych koncepcji. Funkcje oparte na X11 i Wayland zostały przeniesione do oddzielne backendy.
Przeprowadzono gruntowne porządki w API, włączając usunięcie klas GtkMenu, GtkMenuBar i GtkToolbar na rzecz GMenu i opcji bazujących na wyskakujących menu.
GtkTextView i inne widżety wejściowe mają wbudowany stos cofania.
Dodano nową klasę GtkNative dla widżetów, które mają własną powierzchnię wyświetlaną i mogą pracować osobno na pierwszym poziomie, bez konieczności powiązania z widżetami nadrzędnymi.
Dodano nowe widżety, w tym GtkPicture, GtkText, GtkPasswordEntry, GtkListView, GtkGridView, GtkColumnView i widżet wyświetlania Emoji.
Na potrzeby rozwoju widżetów wprowadzono nowy obiekt GtkLayoutManager wraz z implementacją systemu kontroli układu elementów w zależności od wielkości widocznego obszaru. GtkLayoutManager zastępuje właściwości podrzędne w kontenerach GTK, takich jak GtkBox i GtkGrid.
Obsługa zdarzeń została uproszczona i jest teraz używana tylko do wprowadzania danych. Pozostałe zdarzenia zastępowane są osobnymi sygnałami, np. zamiast zdarzeń wyjściowych proponowany jest sygnał „GdkSurface::render”, a zamiast zdarzeń konfiguracyjnych oferowany jest „GdkSurface::size-changed”.
Dodano nową warstwę abstrakcji GdkPaintable, reprezentującą obiekty, które można narysować w dowolnym miejscu i dowolnym rozmiarze, bez konieczności sortowania warstw układu.
Backend Broadwayu został przepisany, aby umożliwić renderowanie danych wyjściowych biblioteki GTK w oknie przeglądarki internetowej.
Interfejs API związany z wykonywaniem operacji przeciągnij i upuść został przeprojektowany, włączając proponowane oddzielne obiekty GdkDrag i GdkDrop.
Ulepszenia w porównaniu do poprzedniej wersji testowej:
Usunięto starą implementację API dostępności dla osób niepełnosprawnych i zastąpiono ją nową wersją opartą na specyfikacji ARIA oraz widżet GtkAccessible.