Het GNOME Project heeft de release van Libadwaita 1.5 gepubliceerd, die een set componenten bevat voor de styling van de gebruikersinterface die de GNOME HIG (Human Interface Guidelines) volgt. De bibliotheek bevat kant-en-klare widgets en objecten voor het bouwen van applicaties die voldoen aan de algemene GNOME-stijl, waarvan de interface adaptief kan worden aangepast aan schermen van elk formaat. De bibliotheekcode is geschreven in C en wordt gedistribueerd onder de LGPL 2.1+ licentie.
De libadwaita-bibliotheek wordt gebruikt in combinatie met GTK4 en bevat componenten van het Adwaita-thema dat in GNOME wordt gebruikt en die uit GTK naar een aparte bibliotheek zijn verplaatst. Door GNOME-stijlelementen naar een aparte bibliotheek te verplaatsen, kunnen GNOME-specifieke wijzigingen afzonderlijk van GTK worden ontwikkeld, waardoor GTK-ontwikkelaars zich kunnen concentreren op de kernzaken en GNOME-ontwikkelaars sneller en flexibeler de stijlveranderingen kunnen doorvoeren die ze willen, zonder dat dit gevolgen heeft voor GTK zelf.
De bibliotheek bevat standaardwidgets die verschillende interface-elementen bestrijken, zoals lijsten, panelen, bewerkingsblokken, knoppen, tabbladen, zoekformulieren, dialoogvensters, enz. Met de voorgestelde widgets kunt u universele interfaces creëren die naadloos functioneren, zowel op grote pc- en laptopschermen als op kleine touchscreens van smartphones. De applicatie-interface verandert dynamisch, afhankelijk van de schermgrootte en beschikbare invoerapparaten. De bibliotheek bevat ook een reeks Adwaita-stijlen die het uiterlijk in overeenstemming brengen met de GNOME-richtlijnen zonder dat handmatige aanpassing nodig is.

De belangrijkste verandering in libadwaita 1.5 was het opnieuw ontwerpen van adaptieve widgets om dialoogvensters te maken die zich aanpassen aan de grootte van het venster. In tegenstelling tot traditionele dialoogvensters, die in afzonderlijke vensters worden geplaatst, worden nieuwe dialoogvensters aan de clientzijde gegenereerd en in bestaande vensters getekend. Ze kunnen niet verder reiken dan het bovenliggende venster. Deze aanpak vereenvoudigt het maken van universele dialoogvensters die compatibel zijn met mobiele en desktopinterfaces en biedt extra mogelijkheden voor het beheer van dialoogvensters (zo hoeft u bijvoorbeeld niet bij te houden wanneer vensters worden afgesloten, u kunt het gedrag voor sluitknoppen kiezen, mobiele versies van applicaties worden automatisch weergegeven als volledig scherm en bij het dimmen van een dialoogvenster wordt rekening gehouden met de stijl van het huidige venster, niet die van het systeem).


In de toekomst willen we een andere versie van dergelijke dialoogvensters implementeren, die niet aan vensters zijn gekoppeld, maar aan tabbladen binnen een venster. Dit kan bijvoorbeeld wenselijk zijn in toepassingen als browsers, zodat dialoogvensters die aan een tabblad zijn gekoppeld, het hoofdvenster niet overlappen bij het schakelen tussen tabbladen.
Voor mobiele apparaten is ondersteuning geïmplementeerd voor het plaatsen van dialoogvensters als bladen die aan de onderkant van het scherm zijn vastgemaakt (onderste bladen), in plaats van als gecentreerde bladen. Dialogen die onderaan zijn vastgezet, zorgen ervoor dat gebruikers geen verwarring meer ervaren bij het sluiten van vensters. In dergelijke dialoogvensters blijft een deel van het bovenliggende venster zichtbaar en zijn de knoppen voor het sluiten van het bovenliggende venster en het dialoogvenster zelf duidelijk gescheiden. Hierdoor raken ze niet meer met elkaar verward.

Nieuwe dialoogvensters worden beheerd met de klasse AdwDialog, die in de meeste situaties vergelijkbaar is met de klasse GtkWindow. De verschillen blijven echter beperkt tot weergave- en sluitbewerkingen. Zo is bijvoorbeeld de eigenschap ":transient-for" vervangen door een parameter in de functie adw_dialog_present(), is een nieuw signaal "::close-attempt" toegevoegd en is de verwerking van de parameter ":can-close" gewijzigd. In plaats van de klassen AdwPreferencesWindow, AdwAboutWindow en AdwMessageDialog wordt voorgesteld om de klassen AdwPreferencesDialog, AdwAboutDialog en AdwAlertDialog te gebruiken met nieuwe dialoogvensters.
Dialoogvensters die geen bovenliggend venster hebben, worden nog steeds als afzonderlijke vensters behandeld. Dialoogvensters waarvan de bovenliggende vensters niet kunnen worden gebruikt om dialoogvensters te hosten, bijvoorbeeld omdat de grootte ervan niet kan worden aangepast of omdat ze niet over de klassen AdwWindow en AdwApplicationWindow beschikken, functioneren ook als vensters.
Wijzigingen in Libadwaita 1.5 die geen betrekking hebben op dialogen:
- De eigenschap ":text-length" is toegevoegd aan de klasse AdwEntryRow om de grootte van de tekst in het invoerveld te beperken.
- De remove_response()-methode is toegevoegd aan de klasse AdwMessageDialog.
- De klasse AdwBreakpointBin, waarmee de gebruikersinterface willekeurig kan worden gewijzigd afhankelijk van de venstergrootte, is bijgewerkt en biedt nu ook de mogelijkheid om breekpunten programmatisch te verwijderen.
- De klasse AdwSwipeTracker heeft nu een ":allow-window-handle"-vlag, zodat u over het bovenste paneel kunt vegen (gebruikt in werkbladen die aan de onderrand zijn vastgezet).
- De helderheid van de kleuren voor vensterschaduw in het donkere thema is verhoogd.
Bron: opennet.ru
