Projekt GNOME je objavio izdanje biblioteke Libadwaita 1.5, koja uključuje skup komponenti za stilizaciju korisničkog sučelja u skladu s preporukama GNOME HIG (Human Interface Guidelines). Biblioteka sadrži gotove vidžete i objekte za kreiranje aplikacija koje se pridržavaju općeg stila GNOME-a i čije su sučelje može adaptivno prilagođavati ekranima bilo koje veličine. Kod biblioteke napisan je u jeziku C i distribuira se pod LGPL 2.1+ licencom.
Biblioteka libadwaita se koristi zajedno sa GTK4 i uključuje komponente teme dekoracije Adwaita koja je izdvojena iz GTK-a kao posebna biblioteka. Izdvajanje vizuelnih elemenata GNOME-a u posebnu biblioteke omogućava razvoj potrebnih promena za GNOME odvojeno od GTK-a, što omogućava GTK programerima da se fokusiraju na osnovne stvari, dok programeri GNOME-a brže i fleksibilnije mogu napredovati s potrebnim promenama stilizovanja, ne dodirujući sam GTK.
Biblioteka uključuje standardne vidžete koji obuhvataju različite elemente interfejsa, kao što su liste, paneli, blokovi za uređivanje, dugmad, kartice, pretraživači i dijaloški prozori itd. Predloženi vidži omogućavaju stvaranje univerzalnih interfejsa koji funkcionišu kako na velikim ekranima računara i laptopa, tako i na malim dodirnim ekranima pametnih telefona. Interfejs aplikacija dinamički se menja u zavisnosti od veličine ekrana i dostupnih uređaja za unos. Biblioteka također uključuje skup stilova Adwaita koji prilagođavaju izgled prema preporukama GNOME-a, bez potrebe za ručnom adaptacijom.

Glavna promjena u libadwaita 1.5 bila je redizajn adaptivnih vidžeta za izradu dijaloga koji se prilagođavaju veličini vidljivog područja. Za razliku od tradicionalnih dijaloga koji se nalaze u odvojenim prozorima, novi dijalozi se formiraju na strani klijenta, crte se unutar postojećih prozora i ne mogu izlaziti izvan roditeljskog prozora. Ovaj pristup olakšava kreiranje univerzalnih dijaloga koji se uklapaju u sučelja za mobilne i desktop sustave, te pruža dodatne mogućnosti za upravljanje dijalozima (na primjer, nije potrebno pratiti izlazak iz okvira, može se odabrati ponašanje glede gumba za zatvaranje, osigurava se automatsko proširenje na cijeli ekran u mobilnim verzijama aplikacija, uzima u obzir stil trenutnog prozora, a ne sustava, prilikom zatamnjivanja dijaloga).


U budućnosti se planira implementirati još jedna varijanta ovakvih dijaloga, koja će biti vezana ne za prozore, već za kartice unutar prozora, što može biti traženo u aplikacijama poput preglednika kako bi dijalozi povezani s karticama ne prekrivali glavni prozor pri prebacivanju između kartica.
Za mobilne uređaje implementirana je podrška za postavljanje dijaloga u obliku donjih listova (bottom sheets), umjesto u obliku centriranih listova. Donji listovi eliminiraju zabunu korisnika pri zatvaranju prozora — u takvim dijalozima dio roditeljskog prozora ostaje vidljiv, a gumbi za zatvaranje roditeljskog prozora i samog dijaloga jasno su odvojeni, stoga ih je teško zamijeniti.

Upravljanje novim dijalozima vrši se putem klase AdwDialog, čija upotreba u većini situacija nalikuje na korištenje klase GtkWindow, a razlike se svode na radnje prikazivanja i zatvaranja. Na primjer, svojstvo «:transient-for» zamijenjeno je parametrom u funkciji adw_dialog_present(), dodan je novi signal «::close-attempt», a obrađivanje parametra «:can-close» je promijenjeno. Umjesto klasa AdwPreferencesWindow, AdwAboutWindow i AdwMessageDialog, sa novim dijalozima se preporučuje korištenje klasa AdwPreferencesDialog, AdwAboutDialog i AdwAlertDialog.
Dijalozi koji nemaju roditeljsku prozoru i dalje će se obrađivati kao zasebni prozori. Kao prozori će također funkcionirati dijalozi čiji roditeljski prozori ne mogu biti korišteni za smještaj dijaloga, na primjer, ako ne dopuštaju promjenu veličine ili ako im nedostaju klase AdwWindow i AdwApplicationWindow.
Nepovezane s preinakom dijaloga promjene u Libadwaita 1.5:
- U klasu AdwEntryRow dodano je svojstvo «:text-length» za ograničavanje veličine teksta u okviru za unos.
- U klasu AdwMessageDialog dodana je metoda remove_response().
- U klasu AdwBreakpointBin, koja omogućuje promjenu korisničkog sučelja na različite načine ovisno o veličini prozora, dodana je mogućnost programskog uklanjanja točaka prekida.
- U klasu AdwSwipeTracker dodana je oznaka «:allow-window-handle», koja omogućava pomicanje preko gornje trake (koristi se u popisima vezanim uz donji rub).
- Povećana je svjetlina boja korištenih pri sjenčenju prozora u tamnom stilu dizajna.
Izvor: opennet.ru
