Het GNOME-project heeft de release van de Libadwaita 1.8-bibliotheek gepubliceerd, die een set componenten bevat voor de opmaak van de gebruikersinterface, in overeenstemming met de aanbevelingen van de GNOME HIG (Human Interface Guidelines). De bibliotheek omvat kant-en-klare widgets en objecten voor het bouwen van applicaties die passen bij de algemene stijl van GNOME, waarbij de interface zich aanpast aan schermen van elke grootte. De code van de bibliotheek is geschreven in de programmeertaal C en wordt verspreid onder de LGPL 2.1+-licentie.
De libadwaita-bibliotheek wordt gebruikt in combinatie met GTK4 en omvat de componenten van het in GNOME gebruikte thema Adwaita, die zijn geƫxtraheerd uit GTK en in een aparte bibliotheek zijn geplaatst. Het scheiden van de visuele elementen van GNOME in een aparte bibliotheek maakt het mogelijk om noodzakelijke wijzigingen voor GNOME onafhankelijk van GTK te ontwikkelen, waardoor GTK-ontwikkelaars zich kunnen concentreren op de basisaspecten, terwijl GNOME-ontwikkelaars sneller en flexibeler de noodzakelijke veranderingen in de stijl kunnen doorvoeren zonder de kern van GTK aan te tasten.
De bibliotheek bevat standaardwidgets die verschillende interface-elementen omvatten, zoals lijsten, panelen, invoervakken, knoppen, tabbladen, zoekformulieren, dialoogvensters, enzovoort. De voorgestelde widgets maken het mogelijk om veelzijdige interfaces te creƫren die goed functioneren zowel op grote schermen van pc's en laptops als op kleine touchscreen-schermen van smartphones. De interface van applicaties past zich dynamisch aan op basis van de schermgrootte en de beschikbare invoerapparaten. De bibliotheek bevat ook een set Adwaita-stijlen die het uiterlijk in overeenstemming brengen met de aanbevelingen van GNOME, zonder dat handmatige aanpassing nodig is.

In de nieuwe versie:
- Ter vervanging van de in GTK 4.18 verouderde GtkShortcutsWindow-klasse, is in Libadwaita de nieuwe AdwShortcutsDialog-klasse geïmplementeerd, die een dialoog biedt voor navigatie door beschikbare toetsencombinaties. De nieuwe implementatie onderscheidt zich door een complete herstructurering en vereenvoudiging van de logica voor het splitsen in secties en groepen. De ontwikkelaar ontvangt een minimale API, en voor het definiëren van de structuur en inhoud van de dialoog worden UI-bestanden gebruikt.
In plaats van GtkShortcutLabel voor het weergeven van elementen, is er een nieuwe klasse AwsShortcutLabel voorgesteld, die geen informatie over schermgebaren en integratie van pictogrammen ondersteunt, omdat hun gebruik leidde tot verwarring en de toepassing beperkt was (bijvoorbeeld, pictogrammen werden alleen in de gnome-games applicatie gebruikt om knoppen van gamepads aan te duiden).

- De mogelijkheid is toegevoegd om CSS-mediacontroles te gebruiken om stijlen voor donkere en lichte weergave, evenals normale en contrasterende weergave van hetzelfde element, te bepalen. De lettergrootte voor inhoud (Adwaita Sans 12pt) en de interface (Adwaita Sans 11pt) zijn gescheiden. Een stijlgroep ā.documentā is toegevoegd waarin voor een betere leesbaarheid het lettertype Adwaita Sans 12pt en een verhoogde regelhoogte wordt gebruikt. De regelhoogte in de stijlgroep ā.bodyā, die nu standaard wordt toegepast in sommige ingebouwde widgets, is vergroot.

- De klasse AdwPreferencesGroup mag met modellen van lijsten worden gebruikt via de methode adw_preferences_group_bind_model(). Ook is de mogelijkheid toegevoegd om strings aan de interne lijst toe te voegen die geen klasse AdwPreferencesRow zijn.
- In de klasse AdwPreferencesPage is het toegestaan om groepen op elke plaats in te voegen, en niet alleen aan het einde van de pagina.
- Aan de klassen AdwPreferencesGroup en AdwPreferencesPage zijn de methoden adw_preferences_page_get_group() en adw_preferences_group_get_row() toegevoegd om groepen en rijen te inspecteren.
- Aan de klasse AdwWrapBox is de methode adw_wrap_box_remove_all() toegevoegd om alle kindelementen te verwijderen.
- Voor de kindelementen van de klasse GtkFlowBox zijn standaardstijlen aangeboden voor het markeren van muis-over op het element en het activeren van het element.
- In de klasse AdwHeaderBar is ondersteuning voor native vensterbedienings-elementen in macOS geĆÆmplementeerd.
- Om de prestaties te verbeteren, is het gebruik van schaduwen voor vensters, dialogen en pop-ups verminderd.
Bron: opennet.ru


