Projekt GNOME opublikował wydanie biblioteki Libadwaita 1.8, która zawiera zestaw komponentów do stylizacji interfejsu użytkownika, zgodnie z wytycznymi GNOME HIG (Zasady Interfejsu Użytkownika). Biblioteka obejmuje gotowe widżety i obiekty do budowy aplikacji, które pasują do ogólnego stylu GNOME, a ich interfejs może być elastycznie dostosowywany do ekranów o różnych rozmiarach. Kod biblioteki jest napisany w języku C i jest udostępniany na licencji LGPL 2.1+.
Biblioteka libadwaita jest używana w połączeniu z GTK4 i zawiera komponenty wykorzystywane w GNOME motywie Adwaita, które zostały przeniesione z GTK do osobnej biblioteki. Przeniesienie elementów wizualnych GNOME do osobnej biblioteki pozwala rozwijać zmiany niezbędne dla GNOME niezależnie od GTK, co umożliwia programistom GTK skoncentrowanie się na podstawowych kwestiach, a programistom GNOME szybsze i bardziej elastyczne wprowadzanie potrzebnych zmian w stylizacji bez wpływania na samo GTK.
Biblioteka zawiera typowe widżety obejmujące różne elementy interfejsu, takie jak listy, panele, pola edycji, przyciski, zakładki, formularze wyszukiwania, okna dialogowe itp. Proponowane widżety pozwalają na tworzenie uniwersalnych interfejsów, które sprawnie działają zarówno na dużych ekranach komputerów i laptopów, jak i na małych ekranach dotykowych smartfonów. Interfejs aplikacji dynamicznie zmienia się w zależności od rozmiaru ekranu i dostępnych urządzeń wejściowych. Biblioteka zawiera również zestaw stylów Adwaita, które dostosowują wygląd do wytycznych GNOME, bez konieczności ręcznej adaptacji.

W nowej wersji:
- W miejsce klasy GtkShortcutsWindow, która została oznaczona jako przestarzała w GTK 4.18, w Libadwaita zaimplementowano nową klasę AdwShortcutsDialog, która realizuje dialog do nawigacji po dostępnych skrótach klawiaturowych. Nowa implementacja wyróżnia się kompletną przebudową i uproszczeniem logiki dzielenia na sekcje i grupy. Deweloper otrzymuje minimalistyczne API, a do definiowania struktury i treści dialogu stosowane są pliki UI.
Zamiast GtkShortcutLabel do przedstawienia elementów zaproponowano nową klasę AwsShortcutLabel, która nie wspiera wskazywania informacji o gestach ekranowych i integracji ikon, ponieważ ich użycie prowadziło do zamieszania, a ich zastosowanie było ograniczone (na przykład, ikony były używane tylko w aplikacji gnome-games do oznaczania przycisków gamepada).

- Dodano możliwość korzystania z zapytań medialnych CSS do określania stylów ciemnego i jasnego motywu, a także zwykłego i kontrastowego przedstawienia tego samego elementu. Rozdzielono rozmiary czcionek dla treści (Adwaita Sans 12pt) oraz interfejsu (Adwaita Sans 11pt). Dodano klasę stylu „.document”, w której dla lepszej czytelności używana jest czcionka Adwaita Sans 12pt i zwiększony interlinia. Zwiększono interlinia w klasie stylu „.body”, która teraz jest stosowana domyślnie w niektórych wbudowanych widżetach.

- Klasę AdwPreferencesGroup można używać z modelami list poprzez metodę adw_preferences_group_bind_model(). Dodano również możliwość dodawania do wewnętrznej listy wierszy, które nie są klasą AdwPreferencesRow.
- W klasie AdwPreferencesPage zezwolono na wstawianie grup w dowolnym miejscu, a nie tylko na końcu strony.
- Do klas AdwPreferencesGroup i AdwPreferencesPage dodano metody adw_preferences_page_get_group() oraz adw_preferences_group_get_row() do inspekcji grup i wierszy.
- W klasie AdwWrapBox dodano metodę adw_wrap_box_remove_all() w celu usunięcia wszystkich elementów podrzędnych.
- Dla elementów podrzędnych klasy GtkFlowBox domyślnie zapewnione są style podświetlenia w momencie najechania myszką oraz aktywacji elementu.
- W klasie AdwHeaderBar zaimplementowano wsparcie dla natywnych elementów sterujących oknami w macOS.
- Aby zwiększyć wydajność, zredukowano użycie cieni dla okien, dialogów i okienek podręcznych.
Źródło: opennet.ru


