Po 10 mesiacoch od momentu testovacieho vydania , nový experimentálny vydanie budúceho stabilného uvoľnenia GTK 4. Vetva GTK 4 sa vyvíja v rámci nového procesu vývoja, ktorý sa snaží poskytnúť vývojárom aplikácií stabilné a podporované API po niekoľko rokov, ktoré môžu používať bez obáv, že každých šesť mesiacov budú musieť prepracovať aplikáciu kvôli zmene API v ďalšej vetve GTK. Do úplnej stabilizácie GTK 4 sa odporúča pokračovať v zostavovaní aplikácií pre používateľov pomocou vetvy .
Hlavné v GTK 3.96:
- V API (GTK Scene Kit), ktorý poskytuje vykreslenie grafických scenérií prostredníctvom OpenGL a Vulkan, prebehla práca na chybách, ktorých identifikácia sa stala jednoduchšou vďaka novému debuggovaciemu nástroju gtk4-node-editor, ktorý umožňuje načítať a zobraziť uzol vykreslovania v serializovanom formáte (môže byť uložený v režime inšpekcie GTK inšpektora), ako aj porovnať výsledok vykreslenia pri použití rôznych backendov;
- Možnosti 3D-transformácií boli posilnené na úroveň, ktorá umožňuje vytvárať animácie ako je rotujúca kocka;
- Úplne GDK backend Broadway, určený na vykreslenie výstupu knižnice GTK v okne webového prehliadača. Starý implementácia Broadway nezapadala do navrhovaných metód vykreslenia v GTK 4 (namiesto výstupu do vyrovnávacej pamäte sa teraz používa model na základe uzlov vykresľovania (render nodes), pri ktorom je výstup konsolidovaný do formy stromu vysokorozmerných operácií, efektívne spracovávaných GPU prostredníctvom OpenGL a Vulkan).
Nová varianta Broadway prekonvertováva uzly vykresľovania na DOM uzly so štýlmi CSS na výstup rozhrania v prehliadači. Každý nový stav obrazovky sa spracováva ako zmena DOM stromu v porovnaní s predchádzajúcim stavom, čo umožňuje zmenšiť objem dát prenášaných vzdialenému klientovi. 3D-transformácie a grafické efekty sa realizujú prostredníctvom CSS vlastnosti transform; - V GDK pokračuje zavádzanie API, navrhnutých so zreteľom na použitie protokolu Wayland, a vykonáva sa čistenie API viazaných na X11, alebo ich presun do samostatného backendu X11. Pozoruje sa pokrok v práci na odstránení používania podružných povrchov a globálnych súradníc. Z GDK bola odstránená podpora GDK_SURFACE_SUBSURFACE;
- Pokračoval refactoring kódu súvisiaceho s vykonávaním operácií Drag-and-Drop, vrátane navrhnutia oddelených objektov GdkDrag a GdkDrop;
- Uľahčila sa správa udalostí, ktoré sa teraz používajú iba na vstup. Ostatné udalosti boli nahradené oddelenými signálmi, napríklad namiesto výstupných udalostí bol navrhnutý signál „GdkSurface::render“, namiesto udalostí danej konfigurácie – „GdkSurface::size-changed“, namiesto udalostí mapovania – „GdkSurface::mapped“, namiesto gdk_event_handler_set() – „GdkSurface::event“;
- Do GDK backendu pre Wayland bola pridaná podpora portálového rozhrania na prístup k nastaveniam GtkSettings. Na prácu s metódami vstupu bola navrhnutá podpora rozšírenia protokolu text-input-unstable-v3;
- Pre vývoj widgetov bol predstavený nový objekt GtkLayoutManager s implementáciou systému správy usporiadania prvkov v závislosti od rozsahu viditeľnej oblasti. GtkLayoutManager nahradil podriadené vlastnosti v kontajneroch GTK, ako sú GtkBox a GtkGrid. Navrhnutých je niekoľko preddefinovaných správcov usporiadania: GtkBinLayout pre jednoduché kontajnery s jedným podriadeným prvkom, GtkBoxLayout pre lineárne zarovnané podriadené prvky, GtkGridLayout pre zarovnávanie podriadených prvkov do mriežky, GtkFixedLayout pre voľné umiestnenie podriadených prvkov, GtkCustomLayout na prekonvertovanie tradičných prvkov na základe správcov size_allocate;
- Do widgetov GtkAssistant, GtkStack a GtkNotebook boli pridané verejne dostupné objekty na stránkový výstup podriadených prvkov, na ktoré boli preložené nezávislé od usporiadania (Layout) podriadené vlastnosti týchto widgetov. Keďže všetky existujúce podriadené vlastnosti boli premenené na bežné vlastnosti, vlastnosti usporiadania alebo presunuté do stránkových objektov, podpora podriadených vlastností bola úplne odstránená z GtkContainer;
- Základná funkcionalita GtkEntry bola presunutá do nového widgetu GtkText, ktorý tiež obsahuje rozšírené rozhranie na úpravu GtkEditable. Všetky existujúce podtriedy vstupu dát boli prepracované vo forme realizácií GtkEditable na báze nového widgetu GtkText;
- Bol pridaný nový widget GtkPasswordEntry na formuláre na zadávanie hesiel;
- Do GtkWidgets bola pridaná možnosť konverzie podriadených prvkov pomocou metód lineárneho transformovania, ktoré sú definované prostredníctvom CSS alebo argumentu gtk_widget_allocate v GskTransform. Daná možnosť už bola aplikovaná na widget GtkFixed;
- Pridané nové modely pre tvorbu zoznamov: GtkMapListModel, GtkSliceListModel, GtkSortListModel, GtkSelectionModel a GtkSingleSelection. V budúcnosti sa plánuje pridať podpora modelov zoznamov do GtkListView;
- V GtkBuilder bola pridaná možnosť nastaviť vlastnosti objektov priamo (inline), namiesto použitia odkazov na identifikátor;
- Do gtk4-builder-tool bola pridaná príkaz na prevod UI súborov z GTK 3 do GTK 4;
- Podpora kľúčových tém dizajnu (key theme), záložkových menu (tabular menu) a kombinovaných blokov (combo box) bola ukončená. Widget GtkInvisible bol odstránený.
Zdroj: opennet.ru
