finální experimentální verze frameworku , v níž jsou implementovány všechny možnosti plánované pro GTK 4. Větev GTK 4 se vyvíjí v rámci nového vývojového procesu, který se snaží poskytnout vývojářům stabilní a podporovaný API na několik let, přičemž se nemusí obávat, že každých šest měsíců budou muset přepracovávat aplikace kvůli změnám API v nové větvi GTK. Vydání GTK 4 je plánováno na konci roku.
Mezi nejvýznamnější v můžeme zmínit:
- Metodu rozložení prvků na základě omezení (), při které jsou umístění a velikost dětských prvků definovány na základě vzdálenosti od okrajů a velikosti dalších prvků.
- Modul vykreslování na bázi grafického API Vulkan, ve kterém jsou implementovány shadery pro mnoho výpočetně náročných prvků CSS používaných ve widgetech GTK.
- Integrace (GTK Scene Kit) s možnostmi vykreslování grafických scén prostřednictvím OpenGL a Vulkan.
- Byla přepracována organizace vykreslování — místo výstupu do vyrovnávací paměti je nyní použita model na bázi vykreslovacích uzlů (render nodes), kdy je výstup sestavován ve formě stromu vysoce úrovňových operací, které GPU efektivně zpracovává pomocí OpenGL a Vulkan.
- pro flexibilní zpracování změny vstupního zaměření.
- Modernizovaný model doručování událostí, který umožňuje obejít se bez subwindow při směrování událostí vstupu. Potřeba implementace nového modelu souvisí s aktivnějším využíváním animačních efektů, jejichž vykreslení by mělo probíhat bez změny rozložení viditelných prvků a tím pádem bez subwindow.
- Přepracováno API GDK s ohledem na použití protokolu Wayland a s ním spojených konceptů. Možnosti vázané na X11 a Wayland byly přesunuty do .
- Bylo provedeno důkladné čištění API, včetně odstranění tříd GtkMenu, GtkMenuBar a GtkToolbar, místo nich byly navrženy GMenu a varianty založené na vyskakovacích nabídkách (popover).
- Do GtkTextView a dalších vstupních widgetů byl integrován zásobník pro vracení změn (undo).
- Byla přidána nová třída GtkNative pro widgety, které mají vlastní zobrazovací plochu a jsou schopny pracovat samostatně na prvním úrovni, bez vazby na nadřazené widgety.
- Byly přidány nové widgety, včetně GtkPicture, GtkText, GtkPasswordEntry, GtkListView, GtkGridView, GtkColumnView a také widget pro zobrazení Emoji.
- Pro vývoj widgetů byl představen nový objekt GtkLayoutManager, který realizuje systém správy rozložení prvků podle velikosti viditelné oblasti. GtkLayoutManager nahradil dětské vlastnosti v kontejnerech GTK, jako jsou GtkBox a GtkGrid.
- Byla zjednodušena obsluha událostí, které jsou nyní používány pouze pro vstup. Ostatní události byly nahrazeny samostatnými signály, například místo výstupních událostí byl navržen signál „GdkSurface::render“ a místo událostí nastavení „GdkSurface::size-changed“.
- Byla přidána nová úroveň abstrakce GdkPaintable, představující objekty, které lze nakreslit kdekoli a v jakékoli velikosti, bez nutnosti provádění třídění layout vrstev.
- Backend Broadway byl přepracován, což umožňuje vykreslovat výstup knihovny GTK v okně webového prohlížeče.
- API související s prováděním operací Drag-and-Drop bylo přepracováno, včetně zavedení samostatných objektů GdkDrag a GdkDrop.
Vylepšení oproti předchozí testovací verzi:
- Byla odstraněna stará implementace Accessibility API pro osoby se zdravotním postižením, která byla nahrazena novou verzí na základě specifikace a widgetu GtkAccessible.
- Byla přidána podpora editovatelných štítků (GtkEditableLabel).
- Byly navrženy nové modely seznamů pro zobrazení záložek (GtkBookmarkList), řetězců (GtkStringList) a bloků výběru (GtkBitset).
- Ve widgetu GtkTreeView byla realizována možnost editace buněk.
- V GtkGridView a GtkListView byla vylepšena realizace posouvání, přidána podpora automatického posouvání a automatického rozbalování.
- V GtkWidget byla výrazně zrychlena zpracování různých akcí.
- V GtkFilterListModel a GtkSortListModel byla přidána podpora inkrementálního posouvání a filtrování.
- Do Inspektoru byla přidána podpora inspekce modelů seznamů a možnost přímé navigace mezi objekty.
- V GDK byla zajištěna údržba historie posouvání, provedena čistka API GdkDevice, bylo zastaveno rozdělení zařízení na master a slave.
- Byl přidán nový GDK backend pro macOS.
- Pro Windows byl navržen nový GDK backend pro vykreslování založený na , pro překlad volání OpenGL ES na OpenGL, Direct3D 9/11, Desktop GL a Vulkan.
Zdroj: opennet.ru
