Po sześciu miesiącach prac została opublikowana wersja wieloplatformowego narzędzia do tworzenia graficznego interfejsu użytkownika — GTK 4.20. GTK 4 rozwija się w ramach procesu, który ma na celu dostarczenie programistom aplikacji stabilnego i wspieranego przez kilka lat API, które można używać bez obaw, że co sześć miesięcy będzie trzeba przerabiać aplikacje z powodu zmiany API w kolejnej wersji GTK.
Wśród zauważalnych ulepszeń w GTK 4.20:
- W celu wsparcia metod wejścia aktywowany został protokół Wayland text-input. Do pracy z kompozytami serwerami bez wsparcia tego protokołu można ręcznie ustawić zmienną środowiskową „GTK_IM_MODULE=simple”, która przywraca wsparcie dla sekwencji kompozycji X11 i klawiszy do wprowadzania znaków diakrytycznych.
- Dodano wsparcie dla protokołu Wayland wl_seat_v10 oraz przetwarzania po stronie serwera zdarzeń powtarzania naciśnięć, generowanych przy przytrzymywaniu klawisza.
- Przy korzystaniu z Wayland dodano wsparcie dla przetwarzania ograniczeń operacji z krawędziami powierzchni górnego poziomu (xdg-toplevel edge constraint). Ta możliwość pozwala menedżerowi kompozycji informować klientów Wayland o istniejących ograniczeniach, na przykład, czy okna mogą zmieniać swoje rozmiary, czy nie.
- Dodano wsparcie dla protokołu Wayland „tablet-v2” w celu organizacji wejścia z tabletów graficznych.
- Udoskonalono przetwarzanie przewijania przy użyciu Wayland.
- Dla przypisania ikony do okien wykorzystano protokół Wayland xdg-toplevel-icon.
- Przeprowadzono czyszczenie i uproszczenie wszystkich ikonek symbolicznych oraz zasobów tematów, które teraz mogą być przetwarzane przez wbudowany parser formatu SVG. Zaprzestano dostarczania ikonek symbolicznych i zasobów tematów w formacie PNG.
- Rozszerzono możliwości tworzenia tematów na bazie CSS. Dodano wsparcie dla zapytań medialnych dotyczących schematu kolorów. Wprowadzono funkcję light-dark(). Ulepszono ustawienia gradientów. Przebudowano kod odpowiedzialny za wyświetlanie cienia dla tekstu.
- Ulepszono przetwarzanie pól do wprowadzania haseł z uwzględnieniem potrzeb osób z ograniczeniami.
- Wprowadzono możliwość wywołania aplikacji gnome-papers do podglądu wydruku. Dodano wsparcie dla portalu xdg do organizacji wyjścia na druk.
- Do zestawu narzędzi dla programistów dodano komponenty do automatycznego uzupełniania wejścia w bashu. Do narzędzia gtk4-rendernode-tool dodano opcję „—offload”. W narzędziu inspekcji usprawniono wyjście informacji o systemie operacyjnym i poprawiono wizualizację zdarzeń. W gtk4-path-tool dodano wsparcie dla wyświetlania przecięć ścieżek oraz zrealizowano możliwości pracy w trybie interaktywnym. W gtk4-demo dodano demonstracje „Path Explorer”, „Sweep” i „Image Filtering”.
- Do debuggera dodano kombinację Super+F do zapisania jednego kadru. Dodano tryb GTK_DEBUG=touch-ui do testowania interfejsów dla ekranów dotykowych.
- W edytorze CSS dodano elementy do zmiany schematu kolorów i kontrastu.
- W bibliotece GSK (GTK Scene Kit), która umożliwia renderowanie graficznych scen za pomocą OpenGL i Vulkan, dodano API gsk_path_foreach_intersection do obliczania przecięć ścieżek. Udoskonalono renderowanie tekstu. Dodano optymalizacje wydajności, na przykład zrealizowano pamięć podręczną masek dla wypełnienia. Zaproponowano koncepcje obrazów do ładowania, nieładowanych i subpróbkowanych.
- W bibliotece GDK, która stanowi powłokę między GTK a systemem graficznym, poprawiono obsługę zmiany rozmiaru okien oraz dodano wsparcie dla współrzędnych względnych przy pracy z tabletami.
- Na platformie Android wdrożono poprawną obsługę wielodotykową oraz wstępną obsługę IME (Input Method Editor).
- W przypadku platformy Windows dodano API do pracy z teksturami przez D3D12. Ulepszono wsparcie dla WGL. Zastosowano D3D11/D3D12 oraz DirectComposition.
- Dodano wsparcie dla wielowarstwowych formatów tekstur.
- W widżecie GtkVideo zrealizowano wsparcie dla formatów YUV. Backend gstreamer przeniesiono na użycie GskPlay. Poprawiono wsparcie dla formatów z subpróbkowaniem. Dodano wsparcie dla programowych dekoderów dla formatów o głębokości koloru 10, 12 i 16 bitów.
- Klasa GtkApplication przeszła na użycie portali xdg zamiast odwołań do menedżera sesji.
- Do klasy GtkBuilder dodano wsparcie dla translacji wyrażeń z stałymi.
- W klasie GtkIconTheme zezwolono na przekreślenie symbolicznych ikonek i dodano parser dla plików SVG. Biblioteka librsvg została włączona do obowiązkowych zależności.
- Do pracy teraz wymagana jest obsługa wayland-protocols 1.44 oraz dostępność rozszerzeń wl_output-v2 i xdg_output-v3.
- Ogłoszono przestarzałe backendy Broadway (renderowanie w oknie przeglądarki internetowej), API Pixbuf, właściwość GtkApplication:register-session oraz konfigurację gtk-application-prefer-dark.
Źródło: opennet.ru
