finálny experimentálny release rámca , v ktorom sú implementované všetky funkcie plánované pre GTK 4. Vetva GTK 4 sa vyvíja v rámci nového vývojového procesu, ktorý sa snaží poskytnúť vývojárom aplikácií stabilné a podporované API na niekoľko rokov, ktoré možno používať bez obáv, že každých šesť mesiacov bude potrebné prepracovať aplikácie kvôli zmene API v ďalšej vetve GTK. Uvoľnenie GTK 4 plánujú vydať do konca roka.
Z naj v možno poznamenať:
- Metóda rozloženia elementov na základe obmedzení (), pri ktorej sa umiestnenie a veľkosť podriadených elementov určuje na základe vzdialenosti od okrajov a veľkosti iných elementov.
- Modul vykresľovania založený na grafickom API Vulkan, v ktorom sú implementované shadery pre mnohé náročné elementy CSS používané vo widgetoch GTK.
- Integrácia (GTK Scene Kit) s možnosťami vykresľovania grafických scén cez OpenGL a Vulkan.
- Preverila sa organizácia vykresľovania — namiesto výstupu do buffera sa teraz využíva model založený na uzloch vykresľovania (render nodes), pri ktorom je výstup kombinovaný v podobe stromu vysokých operácií, efektívne spracovávaných GPU pomocou OpenGL a Vulkan.
- pre flexibilné spracovanie zmeny vstupného zamerania.
- Modernizovaný model doručovania udalostí, ktorý umožňuje obísť subwindow pri smerovaní vstupných udalostí. Potreba implementácie nového modelu súvisí s aktívnejším používaním animačných efektov, ktorých vykreslenie by malo prebiehať bez zmeny rozloženia viditeľných elementov a, samozrejme, bez subwindow.
- Prepracované API GDK s ohľadom na použitie protokolu Wayland a s tým súvisiacich konceptov. Možnosti viazané na X11 a Wayland boli presunuté do .
- Prebehla rozsiahla očista API, vrátane odstránenia tried GtkMenu, GtkMenuBar a GtkToolbar, namiesto ktorých bol navrhnutý GMenu a varianty založené na kontextových menách (popover).
- V GtkTextView a iných vstupných widgetoch je integrovaný zásobník na vracanie zmien (undo).
- Bol pridaný nový prvok GtkNative pre widgety, ktoré majú vlastný zobrazovací povrch a sú schopné fungovať nezávisle na prvom úrovni, bez pripojenia k nadriadeným widgetom.
- Pridané nové widgety vrátane GtkPicture, GtkText, GtkPasswordEntry, GtkListView, GtkGridView, GtkColumnView, ako aj widgetu na zobrazenie Emoji.
- Pre vývoj widgetov bol predstavený nový objekt GtkLayoutManager s implementáciou systému správy rozloženia prvkov v závislosti od veľkosti viditeľnej oblasti. GtkLayoutManager nahradil podriadené vlastnosti v kontajneroch GTK, ako sú GtkBox a GtkGrid.
- Spracovanie udalostí bolo zjednodušené, teraz sú používané iba na vstup. Ostatné udalosti boli nahradené samostatnými signálmi, napríklad namiesto výstupných udalostí bol navrhnutý signál „GdkSurface::render“, namiesto udalostí nastavenia – „GdkSurface::size-changed“.
- Bol pridaný nový úroveň abstrakcie GdkPaintable, ktorý predstavuje objekty, ktoré je možné nakresliť kdekoľvek s akoukoľvek veľkosťou, bez potreby vykonávať triedenie layout vrstiev.
- Backend Broadway bol prepísaný a umožňuje vykresľovať výstup knižnice GTK vo webovom prehliadači.
- API súvisiace s vykonávaním operácií Drag-and-Drop bolo prepracované, vrátane nových oddelených objektov GdkDrag a GdkDrop.
Vylepšenia v porovnaní s minulou testovacou verziou:
- Starý prístup k implementácii Accessibility API pre osoby so zdravotným postihnutím bol odstránený, miesto neho bol ponúknutý nový variant založený na špecifikácii a widgete GtkAccessible.
- Pridaná podpora editovateľných štítkov (GtkEditableLabel).
- Predložené nové modely zoznamov na zobrazenie záložiek (GtkBookmarkList), reťazcov (GtkStringList) a blokov výberu (GtkBitset).
- Vo widgete GtkTreeView sa implementovala možnosť editácie buniek.
- V GtkGridView a GtkListView bola vylepšená implementácia posúvania, pridaná podpora automatického posúvania a automatického rozbalenia.
- V GtkWidget bola značne zrýchlená обработка rôznych akcií.
- V GtkFilterListModel a GtkSortListModel bola pridaná podpora inkrementálneho posúvania a filtrovania.
- V Inspector bola pridaná podpora na inšpektovanie modelov zoznamov a možnosť priamej navigácie medzi objektmi.
- V GDK bola zabezpečená história posúvania, bola vykonaná čistenie API GdkDevice a ukončené rozdelenie zariadení na master a slave.
- Bol pridaný nový GDK backend pre macOS.
- Pre Windows bol navrhnutý nový GDK backend vykresľovania založený na , na prekládanie volaní OpenGL ES do OpenGL, Direct3D 9/11, Desktop GL a Vulkan.
Zdroj: opennet.ru
