Deset měsíců po testovacím vydání , nový experimentální vydání budoucí stabilní verze 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 aplikací stabilní a dlouhodobě podporované API, které mohou používat, aniž by se obávali, že každých šest měsíců budou muset přepracovávat aplikace kvůli změně API v další větvi GTK. Do úplné stabilizace GTK 4 se doporučuje, aby aplikace, které budou nabízeny uživatelům, byly i nadále sestavovány pomocí větve .
Hlavní v GTK 3.96:
- V API (GTK Scene Kit), který zajišťuje vykreslování grafických scén prostřednictvím OpenGL a Vulkan, byly provedeny opravy chyb, které se lépe identifikovaly díky novému ladicímu nástroji gtk4-node-editor, který umožňuje načíst a zobrazit uzel vykreslování v serializovaném formátu (může být uložen pro inspekci v GTK inspektoru), a také porovnat výsledek vykreslování při použití různých backendů;
- Možnosti 3D transformací byly posunuty na úroveň, která umožňuje vytvářet takové animační efekty, jako je otáčející se kostka;
- Úplně Backend GDK Broadway, určený pro vykreslování výstupu knihovny GTK v okně webového prohlížeče. Staré provedení Broadway nevyhovovalo metodám vykreslování navrženým v GTK 4 (místo výstupu do vyrovnávací paměti nyní používá model založený na vykreslovacích uzlech, při kterém je výstup kompozice ve formě stromu vysoce úrovňových operací efektivně zpracovávaných GPU pomocí OpenGL a Vulkan).
Nová varianta Broadway převádí vykreslovací uzly na DOM uzly se styly CSS pro výstup rozhraní do prohlížeče. Každý nový stav obrazovky je zpracováván jako změna DOM stromu vůči minulému stavu, což umožňuje zmenšit velikost dat přenášených vzdálenému klientovi. 3D transformace a grafické efekty jsou implementovány prostřednictvím CSS vlastnosti transform; - V GDK pokračuje implementace API, navržených s ohledem na použití protokolu Wayland, a probíhá úklid API vázaných na X11, nebo jejich přesun do samostatného backendu X11. Je zaznamenán pokrok v práci na odchodu od používání podřízených ploch a globálních souřadnic. Podpora GDK_SURFACE_SUBSURFACE byla odstraněna z GDK;
- Pokračuje refaktoring kódu, který se týká provádění operací Drag-and-Drop, včetně návrhu oddělených objektů GdkDrag a GdkDrop;
- Bylo zjednodušeno zpracování událostí, které se nyní používají 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“, místo událostí změny velikosti „GdkSurface::size-changed“, místo událostí mapování „GdkSurface::mapped“ a místo gdk_event_handler_set() „GdkSurface::event“;
- Do GDK backendu pro Wayland byla přidána podpora portálového rozhraní pro přístup k nastavením GtkSettings. Pro práci s metodami vstupu byla navržena podpora rozšíření protokolu text-input-unstable-v3;
- Pro vývoj widgetů byl představen nový objekt GtkLayoutManager s implementací systému řízení rozložení prvků v závislosti na rozměru viditelné oblasti. GtkLayoutManager nahradil podřízené vlastnosti v kontejnerech GTK, jako jsou GtkBox a GtkGrid. Bylo navrženo několik hotových správců rozložení: GtkBinLayout pro jednoduché kontejnery s jedním podřízeným prvkem, GtkBoxLayout pro lineárně seřazené podřízené prvky, GtkGridLayout pro vyrovnání podřízených prvků podle mřížky, GtkFixedLayout pro libovolné umístění podřízených prvků, GtkCustomLayout pro transformaci tradičních prvků na základě zpracovatelů size_allocate;
- Do widgetů GtkAssistant, GtkStack a GtkNotebook byly přidány veřejně přístupné objekty pro stránkový výstup podřízených prvků, na které byly převedeny vlastnosti datových widgetů, které nejsou spojeny s rozložením (Layout). Vzhledem k tomu, že všechny existující podřízené vlastnosti byly převedeny na běžné vlastnosti, byla podpora podřízených vlastností z GtkContainer zcela odstraněna;
- Základní funkčnost GtkEntry byla přesunuta do nového widgetu GtkText, který také zahrnuje rozšířeného editovacího rozhraní GtkEditable. Všechny existující podtřídy vstupu byly přepracovány do podoby realizací GtkEditable na základě nového widgetu GtkText;
- Byl přidán nový widget GtkPasswordEntry pro formuláře pro zadávání hesel;
- V GtkWidgets byla přidána možnost transformovat podřízené prvky pomocí metod lineární transformace, které lze nastavit prostřednictvím CSS nebo argumentu gtk_widget_allocate v GskTransform. Tato funkce byla již aplikována na widget GtkFixed;
- Byly přidány nové modely pro vytváření seznamů: GtkMapListModel, GtkSliceListModel, GtkSortListModel, GtkSelectionModel a GtkSingleSelection. V budoucnu se plánuje přidání podpory modelů seznamů v GtkListView;
- V GtkBuilder byla přidána možnost definovat vlastnosti objektů přímo na místě (inline) namísto používání odkazů podle identifikátoru;
- Do gtk4-builder-tool byla přidána funkce pro převod UI souborů z GTK 3 na GTK 4;
- Podpora klíčových témat (key theme), tabulkových menu (tabular menu) a kombinovaných bloků (combo box) byla ukončena. Widget GtkInvisible byl odstraněn.
Zdroj: opennet.ru
