den afsluttende eksperimentelle udgave af rammeværket , hvor alle funktioner, der er planlagt til GTK 4, er implementeret. GTK 4-grenen udvikles inden for en ny udviklingsproces, der forsøger at give app-udviklere en stabil og understøttet API i flere år, som de kan bruge uden frygt for, at de skal ændre deres applikationer hver sjette måned på grund af ændringer i API'en i den næste GTK-gren. Udgivelsen af GTK 4 er planlagt til at ske inden årets slutning.
Af de mest i Der er tilføjet makro _ISOC2X_SOURCE for at inkludere funktioner defineret i udkastet til den fremtidige ISO-standard
- Begrænsningsbaseret layoutmetode (), hvor placeringen og størrelsen af underliggende elementer bestemmes ud fra afstanden til grænserne og størrelsen af andre elementer.
- Render-modul baseret på den grafiske API Vulkan, som implementerer shaders til mange ressourcetunge CSS-elementer anvendt i GTK-widgets.
- Integration (GTK Scene Kit) med muligheder for at tegne grafiske scener gennem OpenGL og Vulkan.
- Tegningsorganisationen er revideret – i stedet for at output blive sendt til en buffer, anvendes der nu en model baseret på render-noder, hvor output sammensættes i form af et træ af højniveauoperationer, der effektivt behandles af GPU'en ved hjælp af OpenGL og Vulkan.
- for fleksibel behandling af ændringer i indtastningsfokus.
- Opdateret begivenhedsleveringsmodel, der gør det muligt at undvære subwindow ved rutehåndtering af indtastningsbegivenheder. Behovet for at implementere den nye model skyldes den mere aktive brug af animations-effekter, hvis tegning skal foregå uden at ændre layout af synlige elementer og dermed uden subwindow.
- API'en i GDK er redesignet med henblik på brugen af Wayland-protokollen og relaterede koncepter. Funktionaliteter knyttet til X11 og Wayland er flyttet til .
- Der er foretaget en stor oprydning af API'en, herunder fjernelse af klasserne GtkMenu, GtkMenuBar og GtkToolbar, som er blevet erstattet af GMenu og varianter baseret på popup-menuer.
- I GtkTextView og andre input-widgets er der indbygget en stack til at nulstille ændringer (undo).
- En ny klasse GtkNative er tilføjet til widgets, der har deres egen visningsflade og kan fungere uafhængigt på det første niveau, uden binding til forældre-widgets.
- Nye widgets er tilføjet, inklusive GtkPicture, GtkText, GtkPasswordEntry, GtkListView, GtkGridView, GtkColumnView samt en widget til at vise Emoji.
- Til udvikling af widgets er der præsenteret et nyt objekt GtkLayoutManager, som implementerer et system til styring af layout af elementer afhængigt af størrelsen på det synlige område. GtkLayoutManager kom i stedet for børneegenskaberne i GTK-beholdere som GtkBox og GtkGrid.
- Håndteringen af hændelser er blevet forenklet, og nu bruges de kun til input. Andre hændelser er erstattet af separate signaler, for eksempel er signalet „GdkSurface::render“ foreslået i stedet for outputhændelser, og „GdkSurface::size-changed“ i stedet for justeringshændelser.
- Der er tilføjet et nyt abstraktionsniveau GdkPaintable, der repræsenterer objekter, som kan tegnes hvor som helst i vilkårlig størrelse uden behov for at udføre sortering af layout-lag.
- Backend'en Broadway er blevet omskrevet, hvilket muliggør tegningsoutput fra GTK-biblioteket i et webbrowser-vindue.
- API'et, der er relateret til udførelsen af Drag-and-Drop-operationer, er blevet redesignet, herunder separate objekter GdkDrag og GdkDrop.
Forbedringer i forhold til den tidligere testudgave:
- Den gamle implementering af Accessibility API til personer med handicap er blevet fjernet, og der er i stedet foreslået en ny version baseret på specifikationen og widgeten GtkAccessible.
- Tilføjet understøttelse af redigerbare etiketter (GtkEditableLabel).
- Der er foreslået nye listemodeller til visning af bogmærker (GtkBookmarkList), strenge (GtkStringList) og valgblokke (GtkBitset).
- I widgeten GtkTreeView er muligheden for at redigere celler blevet implementeret.
- I GtkGridView og GtkListView er implementeringen af scrolling forbedret, og der er tilføjet understøttelse af automatisk scrolling og auto-udfoldning.
- I GtkWidget er behandlingen af forskellige handlinger betydeligt accelereret.
- I GtkFilterListModel og GtkSortListModel er der tilføjet understøttelse af inkrementel scrolling og filtrering.
- I Inspector er der tilføjet understøttelse af inspektion af liste-modeller og mulighed for direkte navigation mellem objekter.
- I GDK er der sikret lagring af scrollhistorik, API'et GdkDevice er blevet oprenset, og adskillelsen af enheder i master og slave er blevet ophævet.
- Der er tilføjet en ny GDK-backend til macOS.
- Der er foreslået en ny GDK-backend til rendering på Windows baseret på , til at translatere OpenGL ES opkald til OpenGL, Direct3D 9/11, Desktop GL og Vulkan.
Kilde: opennet.ru
