Po ośmiu miesiącach prac programistycznych opublikowano wersję wieloplatformowego zestawu narzędzi do tworzenia interfejsów graficznych — GTK 4.8.0. GTK 4 rozwija się w ramach nowego procesu tworzenia, który ma na celu dostarczenie programistom aplikacji stabilnego i wspieranego przez wiele lat API, którego można używać bez obaw, że co pół roku trzeba będzie przerabiać aplikacje z powodu zmiany API w kolejnej wersji GTK.
Wśród najbardziej zauważalnych usprawnień w GTK 4.8:
- Zmieniono styl interfejsu wyboru kolorów (GtkColorChooser).
- W interfejsie wyboru czcionek (GtkFontChooser) poprawiono wsparcie dla funkcji formatu OpenType.
- W silniku CSS zoptymalizowano regrouping elementów powiązanych z jednym rodzicem i zezwolono na użycie wartości niecałkowitych przy określaniu wielkości odstępu między literami.
- Dane Emoji zaktualizowano do zestawu CLDR 40 (Unicode 14). Dodano wsparcie dla nowych lokalizacji.
- W motywie graficznym zaktualizowano ikony i poprawiono czytelność zaznaczonych etykiet tekstowych.
- W bibliotece GDK, która zapewnia warstwę między GTK a systemem graficznym, zoptymalizowano konwersję formatów pikselowych. W systemach z sterownikami NVIDIA aktywowane jest rozszerzenie EGL — EGL_KHR_swap_buffers_with_damage.
- W bibliotece GSK (GTK Scene Kit), która zapewnia możliwości renderowania scen graficznych poprzez OpenGL i Vulkan, wdrożono wsparcie dla przetwarzania dużych widocznych obszarów (viewport-ów). Zaproponowano biblioteki do renderowania glifów z użyciem tekstur.
- Dla Wayland zaimplementowano wsparcie dla protokołu „xdg-activation”, który umożliwia przenoszenie fokusu między różnymi powierzchniami pierwszego poziomu (na przykład za pomocą xdg-activation jedna aplikacja może przenieść fokus na drugą).
- W widżecie GtkTextView zmniejszono liczbę sytuacji prowadzących do ponownych przerysowań oraz wdrożono funkcję GetCharacterExtents do określenia obszaru z glifem, który definiuje znak w tekście (funkcja ta jest użyteczna w narzędziach dla osób z ograniczeniami).
- W klasie GtkViewport, stosowanej do organizowania przewijania w widżetach, domyślnie włączony jest tryb „scroll-to-focus”, w którym zawartość automatycznie przewija się, aby utrzymać w widoku element, na którym znajduje się fokus wprowadzania.
- W widżecie GtkSearchEntry, który wyświetla obszar do wprowadzania zapytania wyszukiwania, wprowadzono możliwość ustawienia opóźnienia między ostatnim naciśnięciem klawisza a wysłaniem sygnału o zmianie zawartości (GtkSearchEntry::search-changed).
- W widżecie GtkCheckButton dodano możliwość przypisania własnego widżetu podrzędnego z przyciskiem.
- W widżecie GtkPicture dodano właściwość „content-fit”, aby dostosować zawartość do określonego rozmiaru obszaru.
- W widżecie GtkColumnView przeprowadzono optymalizację wydajności przewijania.
- W widżecie GtkTreeStore zezwolono na pobieranie danych drzewiastych z plików w formacie ui.
- W klasie GtkInscription, odpowiedzialnej za wyświetlanie tekstu w określonym obszarze, dodano nowy widżet do wyświetlania list. Dodano aplikację demonstracyjną z przykładem użycia GtkInscription.
- W widżecie GtkTreePopover dodano wsparcie dla przewijania.
- W widżecie GtkLabel dodano wsparcie dla tabulatorów i umożliwiono aktywację etykiet przez naciśnięcie przypisanych do etykiety symboli na klawiaturze.
- W widżecie GtkListView zaimplementowano wsparcie dla właściwości „::n-items” i „::item-type”.
- W systemie wejścia wprowadzono wsparcie dla obsługi parametrów rozmiarów (GDK_SCROLL_UNIT_WHEEL, GDK_SCROLL_UNIT_SURFACE) przewijania.
- Dla platformy macOS dodano wsparcie dla trybu pełnoekranowego i odtwarzania wideo z użyciem OpenGL. Ulepszono wykrywanie monitorów, pracę w konfiguracjach wielomonitorowych, rozmieszczanie okien oraz wybór rozmiaru dla okna dialogowego pracy z plikami. Do renderowania wykorzystano CALayer i IOSurface. Zapewniono uruchamianie aplikacji w tle.
- Na platformie Windows poprawiono rozmieszczanie okien na ekranach HiDPI, dodano interfejs określania koloru, zrealizowano wsparcie dla zdarzeń przewijania z wysoką rozdzielczością, poprawiono wsparcie dla touchpadów.
- Do narzędzia gtk4-builder-tool dodano polecenie screenshot do tworzenia zrzutów ekranu, które wykorzystuje się podczas generowania zrzutów ekranu dla dokumentacji.
- Zapewniono instalację narzędzia gtk4-node-editor.
- Rozszerzone możliwości debuggera. Zaimplementowano wyświetlanie dodatkowych danych aplikacji oraz umożliwiono przeglądanie właściwości PangoAttrList podczas inspekcji. Umożliwiono inspekcję inspektorów. Dodano wsparcie dla trybu „GTK_DEBUG=invert-text-dir”. Zamiast zmiennej środowiskowej GTK_USE_PORTAL zaproponowano tryb „GDK_DEBUG=portals”. Zwiększono responsywność interfejsu inspekcji.
- Do backendu ffmpeg dodano wsparcie dla dźwięku.
- Limit pamięci w loaderze obrazów JPEG zwiększono do 300 MB.
Źródło: opennet.ru
