Po sześciu miesiącach prac rozwojowych opublikowano wersję wieloplatformowego narzędzia do tworzenia interfejsów graficznych — GTK 4.10.0. GTK 4 rozwija się w ramach nowego procesu rozwoju, który stara się dostarczyć programistom aplikacji stabilne i wspierane przez wiele lat API, które można wykorzystać bez obaw, że co pół roku trzeba będzie przekształcać aplikacje z powodu zmiany API w kolejnej wersji GTK.
Wśród najbardziej zauważalnych usprawnień w GTK 4.10:
- W widżecie GtkFileChooserWidget, który służy do wyboru plików w aplikacjach, wprowadzono tryb wyświetlania zawartości katalogów w formie siatki ikon. Domyślnie nadal używane jest klasyczne wyświetlanie w postaci listy plików, a w celu przejścia w tryb ikon w prawym górnym rogu panelu pojawił przycisk.

- Dodano nowe klasy GtkColorDialog, GtkFontDialog, GtkFileDialog i GtkAlertDialog, które implementują dialogi do wyboru kolorów, czcionek i plików oraz wyświetlania powiadomień. Nowe opcje różnią się przejściem na bardziej spójne i zrównoważone API, działające w trybie asynchronicznym (GIO async). W nowych dialogach wykorzystywane są portale Freedesktop (xdg-desktop-portal) do organizacji dostępu do zasobów środowiska użytkownika z izolowanych aplikacji, jeśli to możliwe.
- Dodano nowy backend CPDB (Common Printing Dialog Backend), który oferuje standardowe obsługiwacze do użycia w dialogach drukowania. Wsparcie dla wcześniej używanego backendu lpr do drukowania zostało zakończone.
- W bibliotece GDK, która zapewnia warstwę pośrednią między GTK a systemem graficznym, wprowadzono strukturę GdkTextureDownloader, która jest używana do ładowania tekstur w klasie GdkTexture i może być zastosowana do przekształcania różnych formatów. Udoskonalono skalowanie tekstur z użyciem OpenGL.
- W bibliotece GSK (GTK Scene Kit), która oferuje możliwości renderowania scen graficznych przez OpenGL i Vulkan, wprowadzono wsparcie dla węzłów z maskami oraz konfigurowalnym filtrowaniem skalowanych tekstur.
- Zrealizowano wsparcie dla nowych wersji rozszerzeń protokołów Wayland. Umożliwiono wyświetlanie powiadomień startowych podczas korzystania z protokołu 'xdg-activation'. Rozwiązano problemy z rozmiarem kursora na ekranach o wysokiej gęstości pikseli.
- Klasa GtkMountOperation jest dostosowana do pracy w środowiskach bez X11.
- W backendzie Broadway, który umożliwia renderowanie wyjścia biblioteki GTK w oknie przeglądarki webowej, dodano wsparcie dla okien modalnych.
- W klasie GtkFileLauncher zaproponowano nowe asynchroniczne API jako zamiennik dla gtk_show_uri.
- W narzędziu gtk-builder-tool poprawiono obsługę szablonów.
- W widżecie GtkSearchEntry dodano wsparcie dla tekstu wypełniającego, który jest wyświetlany, gdy pole jest puste i nie ma na nim skupienia.
- Dodano klasę GtkUriLauncher, która zastępuje funkcję gtk_show_uri, stosowaną do określenia aplikacji uruchamianej do wyświetlania podanego URI lub zgłaszania błędu w przypadku braku obsługiwacza.
- W klasie GtkStringSorter dodano wsparcie dla różnych metod „collation”, co pozwala na porównywanie i sortowanie z uwzględnieniem znaczenia znaków (na przykład przy obecności znaku diakrytycznego).
- Duża część API i widżetów została uznana za przestarzałą i nie będzie wspierana w przyszłej wersji GTK5, zastępując je analogami działającymi w trybie asynchronicznym:
- GtkDialog (należy używać GtkWindow).
- GtkTreeView (należy używać GtkListView i GtkColumnView).
- GtkIconView (należy używać GtkGridView).
- GtkComboBox (należy używać GtkDropDown).
- GtkAppChooser (należy używać GtkDropDown).
- GtkMessageDialog (należy używać GtkAlertDialog).
- GtkColorChooser (należy używać GtkColorDialog i GtkColorDialogButton).
- GtkFontChooser (należy używać GtkFontDialog i GtkFontDialogButton).
- GtkFileChooser (należy używać GtkFileDialog).
- GtkInfoBar
- GtkEntryCompletion
- GtkStyleContext
- GtkVolumeButton
- GtkStatusbar
- GtkAssistant
- GtkLockButton
- gtk_widget_show/hide
- gtk_show_uri
- gtk_render_ i gtk_snapshot_render_
- gtk_gesture_set_sequence_state
- Zmieniono na publiczny interfejs GtkAccessible, co umożliwia podłączenie zewnętrznych obsługujących elementy interfejsu dla osób z ograniczeniami. Dodano interfejs GtkAccessibleRange.
- Na platformie macOS zapewniono wsparcie dla przeciągania elementów myszą (DND, Drag-and-Drop).
- Na platformie Windows poprawiono integrację z ustawieniami systemowymi.
- Ujednolicono format wyjścia debugowania.
- Limit pamięci dla ładowarki obrazów w formacie JPEG podniesiono do 1 GB.
Źródło: opennet.ru

