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.

Z większości istotne zmiany в GTK 4 możesz zauważyć:

  • 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.
  • Dodano obsługę edytowalnych etykiet (GtkEditableLabel).
  • Zaproponowano nowe modele list do wyświetlania zakładek (GtkBookmarkList), ciągów znaków (GtkStringList) i bloków wyboru (GtkBitset).
  • Widget GtkTreeView posiada możliwość edycji komórek.
  • Poprawiono implementację przewijania w GtkGridView i GtkListView, dodano obsługę automatycznego przewijania i automatycznego rozwijania.
  • GtkWidget znacznie przyspiesza przetwarzanie różnych działań.
  • Dodano obsługę przyrostowego przewijania i filtrowania do GtkFilterListModel i GtkSortListModel.
  • Inspektor dodał obsługę sprawdzania modeli list i możliwość bezpośredniego poruszania się pomiędzy obiektami.
  • W GDK zapisano historię przewijania, wyczyszczono API GdkDevice i zatrzymano rozdział urządzeń na master i slave.
  • Dodano nowy backend GDK dla systemu macOS.
  • Nowy backend renderujący GDK oparty na KĄT, międzywarstwy do tłumaczenia wywołań OpenGL ES na OpenGL, Direct3D 9/11, Desktop GL i Vulkan.

Źródło: opennet.ru

Dodaj komentarz