Projekti GNOME publikoi versionin e bibliotekës Libadwaita 1.5, e cila përfshin një set komponentesh për styling-un e ndërfaqeve të përdoruesit, përputhshëm me rekomandimet GNOME HIG (Udhëzimet për Ndërfaqen e Njeriut). Biblioteka përfshin widget-e dhe objekte të gatshme për ndërtimin e aplikacioneve, që i përmbahen stilit të përgjithshëm GNOME, ndërfaqja e të cilave mund të adaptohet fleksibël për ekranet e çdo madhësie. Kodi i bibliotekës është shkruar në gjuhën C dhe shpërndahet nën licencën LGPL 2.1+.
Biblioteka libadwaita përdoret në bashkëpunim me GTK4 dhe përfshin komponentët e temës së përdorur në GNOME, Adwaita, të cilat janë nxjerrë nga GTK në një bibliotekë të veçantë. Nxjerrja e elementeve të paraqitjes vizuale të GNOME në një bibliotekë të veçantë lejon zhvillimin e ndryshimeve të nevojshme për GNOME veçmas nga GTK, duke u dhënë mundësi zhvilluesve të GTK të përqendrohen në gjërat baza, ndërsa zhvilluesit e GNOME të avancojnë më shpejt dhe fleksibël ndryshimet e nevojshme për stilizimin e tyre, pa prekur vetë GTK.
Biblioteka përfshin widget-e standarde që mbulojnë elemente të ndryshme të ndërfaqes, si lista, panelet, blloqet e redaktimit, butonat, skedat, format e kërkimit, dritaret dialoguese e të tjera. Widget-at e propozuara lejojnë krijimin e ndërfaqeve universale, të cilat funksionojnë organikisht si në ekranet e mëdha të PC-ve dhe laptopëve, ashtu edhe në ekranet e vogla të prekes për smartphone. Ndëfaqja e aplikacioneve ndryshon dinamikisht në varësi të madhësisë së ekranit dhe pajisjeve të disponueshme të hyrjes. Biblioteka gjithashtu përfshin një grup stilesh Adwaita, që i sjell pamjet në përputhje me rekomandimet GNOME, pa pasur nevojë për adaptim manual.

Ndryshimi kryesor në libadwaita 1.5 ishte ripërpunimi i widget-eve adaptivë për krijimin e dritareve të dialogut, të cilat adaptohen sipas madhësisë së zonës së dukshme. Ndryshe nga dialogët tradicionalë, të cilët vendosen në dritare të veçanta, dialogët e rinj formohen nga ana e klientit, vizatohen brenda dritareve ekzistuese dhe nuk mund të dalin jashtë dritares prind. Këtu bëhet më e lehtë krijimi i dialogëve universale, që kombinohen me ndërfaqet për sistemet mobile dhe desktop, si dhe ofron mundësi të tjera për menaxhimin e dialogëve (për shembull, nuk ka nevojë të ndjekim daljen jashtë dritares, mund të zgjedhim sjelljen në lidhje me butonat e mbylljes, ofrohet shfaqja automatike në ekran të plotë në versionet mobile të aplikacioneve, merret parasysh stili i dritares aktuale, e jo i sistemit, gjatë errësimit të dialogut).


Në të ardhmen planifikohet implementimi i një versioni tjetër të tillë të dialogëve, të lidhur jo me dritaret, por me skedat brenda dritares, që mund të kërkohet në aplikacione si shfletuesit, për të parandaluar që dialogët e lidhur me skedat të mbulojnë dritaren kryesore kur kalohesh nga një skedë në tjetrën.
Për pajisjet mobile është implementuar mbështetje për vendosjen e dialogëve në formën e fletëve, të ngjitura në pjesën e poshtme të ekranit (bottom sheets), në vend të fletëve, të cenrtuar. Dialogët e ngjitur në fund e eliminojnë konfuzionin e përdoruesve me mbylljen e dritareve - në këto dialogë një pjesë e dritares prind mbetet e dukshme dhe butonat e mbylljes së dritares prind dhe vetë dialogut janë qartë të ndara, kështu që tani është e vështirë t'i ngatërrosh.

Menaxhimi i dialogëve të rinj bëhet përmes klasës AdwDialog, puna me të cilën në shumicën e situatave i ngjan përdorimit të klasës GtkWindow, ndërsa ndryshimet përqendrohen në operacionet e shfaqjes dhe mbylljes. Për shembull, prona ":transient-for" është zëvendësuar me një parametër në funksionin adw_dialog_present(), është shtuar një sinjal i ri "::close-attempt", është ndryshuar përpunimi i parametrave ":can-close". Në vend të klasave AdwPreferencesWindow, AdwAboutWindow dhe AdwMessageDialog, është propozuar të përdoren klasat AdwPreferencesDialog, AdwAboutDialog dhe AdwAlertDialog.
Dialogët që nuk kanë një dritare prind do të trajtohen ende si dritare të veçanta. Si dritare do të funksionojnë gjithashtu dialogët, dritaret prind të të cilëve nuk mund të përdoren për vendosjen e dialogëve, për shembull, nëse ato nuk lejojnë ndryshimin e madhësisë ose për to nuk ekzistojnë klasat AdwWindow dhe AdwApplicationWindow.
Ndryshimet që nuk lidhen me rishikimin e dialogëve në Libadwaita 1.5:
- Në klasën AdwEntryRow është shtuar prona ":text-length" për të kufizuar madhësinë e tekstit në fushën e hyrjes.
- Në klasën AdwMessageDialog është shtuar metoda remove_response().
- Në klasën AdwBreakpointBin, e cila mundëson ndryshimin e ndërfaqes së përdoruesit në mënyrë të rastësishme në varësi të madhësisë së dritares, është shtuar mundësia për të hequr pikat e ndalimit programatikisht.
- Në klasën AdwSwipeTracker është shtuar flagu ":allow-window-handle", i cili lejon kalimin mbi panelin e sipërm (përdoret në fletët e lidhura me fundin).
- ĂshtĂ« rritur ndriçimi i ngjyrave tĂ« pĂ«rdorura gjatĂ« errĂ«simit tĂ« dritareve me stilin e errĂ«t.
Burimi: opennet.ru
