Wydanie GTK 3.99.0 oznacza gotowość funkcji zaplanowanych dla GTK 4

Opublikowano ostateczny eksperymentalny wydanie frameworka GTK 3.99.0, w którym zrealizowane zostały wszystkie możliwości zaplanowane dla GTK 4. Gałąź GTK 4 rozwija się w ramach nowego procesu rozwoju, który stara się zapewnić programistom aplikacji stabilne i wspierane przez kilka lat API, które można wykorzystać bez obaw, że co sześć miesięcy będzie trzeba przerabiać aplikacje z powodu zmian API w kolejnej gałęzi GTK. Wydanie GTK 4 planowane jest do końca roku.

Do najbardziej istotnych zmian do GTK 4 można wymienić:

  • Metoda układania elementów oparta na ograniczeniach (constraint layout), w której położenie i rozmiar elementów podrzędnych są określane na podstawie odległości od granic i rozmiaru innych elementów.
  • Moduł renderowania oparty na API graficznym Vulkan, w którym zrealizowane zostały shadery dla wielu zasobożernych elementów CSS stosowanych w widgetach GTK.
  • Integracja GSK (GTK Scene Kit) z możliwościami renderowania scen graficznych przez OpenGL i Vulkan.
  • Przegląd organizacji renderowania — zamiast wyjścia do bufora, teraz stosuje się model oparty na węzłach renderowania (render nodes), w którym wyjście jest kompozytowane w formie drzewa operacji wysokiego poziomu, efektywnie przetwarzanych przez GPU za pomocą OpenGL i Vulkan.
  • Narzędzia do elastycznego przetwarzania zmian w fokusie wejścia.
  • Zmodernizowany model dostarczania zdarzeń, który pozwala obejść się bez subwindow podczas routingu zdarzeń wejściowych. Konieczność wdrożenia nowego modelu związana jest z bardziej aktywnym wykorzystaniem efektów animacyjnych, których renderowanie powinno odbywać się bez zmiany układu widocznych elementów, a tym samym bez subwindow.
  • Przerobione API GDK z myślą o użyciu protokołu Wayland i związanych z nim koncepcji. Opcje związane z X11 i Wayland przeniesione zostały do oddzielnych backendów.
  • Przeprowadzono dużą czyszczenie API, w tym usunięto klasy GtkMenu, GtkMenuBar i GtkToolbar, w ich miejsce zaproponowano GMenu i warianty oparte na menu kontekstowych (popover).
  • W GtkTextView i innych widgetach wejściowych wbudowany został stos do przywracania zmian (undo).
  • Dodana została nowa klasa GtkNative dla widgetów, które mają własną powierzchnię wyświetlania i mogą działać samodzielnie na pierwszym poziomie, bez powiązania z rodzicami widgetów.
  • Dodane nowe widgety, w tym GtkPicture, GtkText, GtkPasswordEntry, GtkListView, GtkGridView, GtkColumnView oraz widget do wyświetlania Emoji.
  • Wprowadzono nowy obiekt GtkLayoutManager do tworzenia widgetów, który implementuje system zarządzania układem elementów w zależności od rozmiaru widocznego obszaru. GtkLayoutManager zastąpił właściwości podrzędne w kontenerach GTK, takich jak GtkBox i GtkGrid.
  • Uproszczono obsługę zdarzeń, które teraz są używane tylko do wprowadzania. Pozostałe zdarzenia zostały zastąpione osobnymi sygnałami, na przykład zamiast zdarzeń wyjścia wprowadzono sygnał „GdkSurface::render”, a zamiast zdarzeń zmiany rozmiaru - „GdkSurface::size-changed”.
  • Dodano nowy poziom abstrakcji GdkPaintable, reprezentujący obiekty, które można rysować gdziekolwiek w dowolnym rozmiarze, bez konieczności sortowania warstw układu.
  • Przepisano backend Broadway, umożliwiający rysowanie wyjścia biblioteki GTK w oknie przeglądarki internetowej.
  • Przeprojektowano API związane z operacjami przeciągania i upuszczania, w tym wprowadzono oddzielne obiekty GdkDrag i GdkDrop.

Udoskonalenia w porównaniu do poprzedniej wersji testowej:

  • Usunięto starą implementację API dostępności dla osób z niepełnosprawnościami, którą zastąpiono nową wersją opartą na specyfikacji ARIA i widżetu GtkAccessible.
  • Dodano wsparcie dla edytowalnych etykiet (GtkEditableLabel).
  • Wprowadzono nowe modele list do wyświetlania zakładek (GtkBookmarkList), ciągów (GtkStringList) i bloków wyboru (GtkBitset).
  • W widżecie GtkTreeView wprowadzono możliwość edytowania komórek.
  • W GtkGridView i GtkListView poprawiono implementację przewijania, dodano wsparcie dla automatycznego przewijania i samoczynnego rozwoju.
  • W GtkWidget znacznie przyspieszono przetwarzanie różnych działań.
  • W GtkFilterListModel i GtkSortListModel dodano wsparcie dla inkrementalnego przewijania i filtrowania.
  • W Inspektorze dodano wsparcie inspekcji modeli list oraz możliwość bezpośredniej nawigacji między obiektami.
  • W GDK zapewniono zachowanie historii przewijania, przeprowadzono czyszczenie API GdkDevice, zaprzestano rozdzielania urządzeń na master i slave.
  • Dodano nowy backend GDK dla macOS.
  • Dla Windows wprowadzono nowy backend GDK do rysowania oparty na ANGLE, warstwy w celu translacji wywołań OpenGL ES na OpenGL, Direct3D 9/11, Desktop GL i Vulkan.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster