de finale experimentele uitgave van het framework , waarin alle functies zijn geïmplementeerd die zijn gepland voor GTK 4. De GTK 4 tak ontwikkelt zich binnen een nieuw ontwikkelingsproces dat probeert ontwikkelaars een stabiele en ondersteunde API te bieden voor meerdere jaren, zodat ze zich geen zorgen hoeven te maken dat ze hun applicaties elke zes maanden moeten herzien vanwege veranderingen in de API van de volgende GTK tak. De release van GTK 4 is gepland voor eind dit jaar.
Van de meest in kunnen worden opgemerkt:
- Een op beperkingen gebaseerde lay-outmethode (), waarbij de positie en grootte van de kindelementen worden bepaald op basis van de afstand tot de randen en de grootte van andere elementen.
- Een tekenmodule op basis van de grafische API Vulkan, waarin shaders zijn geïmplementeerd voor veel resource-intensieve CSS-elementen die in GTK-widgets worden gebruikt.
- Integratie (GTK Scene Kit) met mogelijkheden voor het tekenen van grafische scènes via OpenGL en Vulkan.
- De organisatie van het tekenen is herzien — in plaats van output naar een buffer, wordt nu een model op basis van tekenknopen gebruikt, waarbij de output wordt samengesteld in een boom van hoog-niveau operaties die efficiënt door de GPU worden verwerkt met behulp van OpenGL en Vulkan.
- voor flexibele verwerking van wijzigingen in invoerfocus.
- Een gemoderniseerd evenementafgiftesysteem dat het gebruik van subwindow bij het routeren van invoerevenementen overbodig maakt. De noodzaak voor de implementatie van een nieuw model hangt samen met een actiever gebruik van animatie-effecten, waarvan de rendering moet plaatsvinden zonder de lay-out van zichtbare elementen te veranderen en dus zonder subwindow.
- De GDK API is herzien met het oog op het gebruik van het Wayland-protocol en gerelateerde concepten. Functies die afhankelijk zijn van X11 en Wayland zijn verplaatst naar .
- Er heeft een grote schoonmaak van de API plaatsgevonden, inclusief het verwijderen van de klassen GtkMenu, GtkMenuBar en GtkToolbar, waarvoor GMenu en opties op basis van pop-upmenu's (popover) zijn voorgesteld.
- Een undo-stack is geïntegreerd in GtkTextView en andere invoerwidgets.
- Een nieuwe klasse GtkNative voor widgets, die een eigen weergave-oppervlak hebben en onafhankelijk op het eerste niveau kunnen werken, zonder afhankelijkheid van de bovenliggende widgets, is toegevoegd.
- Nieuwe widgets zijn toegevoegd, waaronder GtkPicture, GtkText, GtkPasswordEntry, GtkListView, GtkGridView, GtkColumnView, en een widget voor het tonen van emoji.
- Voor de ontwikkeling van widgets is er een nieuw object GtkLayoutManager geïntroduceerd dat een systeem voor het beheer van de lay-out van elementen implementeert, afhankelijk van de grootte van het zichtbare gebied. GtkLayoutManager vervangt de kindseigenschappen in GTK-containers zoals GtkBox en GtkGrid.
- De verwerking van gebeurtenissen is vereenvoudigd en deze worden nu alleen voor invoer gebruikt. Overige gebeurtenissen zijn vervangen door aparte signalen, bijvoorbeeld in plaats van uitvoerevenementen is het signaal «GdkSurface::render» voorgesteld, en voor instellingen is «GdkSurface::size-changed» geïntroduceerd.
- Een nieuw abstractieniveau GdkPaintable is toegevoegd, dat objecten vertegenwoordigt die overal met elke grootte kunnen worden getekend, zonder dat er sortering van lay-outlagen nodig is.
- De backend van Broadway is herschreven, waardoor de uitvoer van de GTK-bibliotheek in een webbrowser kan worden weergegeven.
- De API met betrekking tot het uitvoeren van Drag-and-Drop-operaties is herzien, met afzonderlijke objecten GdkDrag en GdkDrop.
Verbeteringen ten opzichte van de vorige testversie:
- De oude implementatie van de Accessibility API voor mensen met een beperking is verwijderd en vervangen door een nieuwe versie op basis van de specificatie en de widget GtkAccessible.
- Ondersteuning voor bewerkbare labels (GtkEditableLabel) is toegevoegd.
- Nieuwe lijstmodellen voor het weergeven van bladwijzers (GtkBookmarkList), rijen (GtkStringList) en selectievakken (GtkBitset) zijn voorgesteld.
- In de GtkTreeView-widget is de mogelijkheid voor het bewerken van cellen geïmplementeerd.
- In GtkGridView en GtkListView is de implementatie van scrollen verbeterd, inclusief ondersteuning voor autoscroll en auto-uitvouwen.
- In GtkWidget is de verwerking van verschillende handelingen aanzienlijk versneld.
- In GtkFilterListModel en GtkSortListModel is ondersteuning voor incrementeel scrollen en filteren toegevoegd.
- In de Inspector is ondersteuning toegevoegd voor het inspecteren van lijstmodellen en directe navigatie tussen objecten is mogelijk gemaakt.
- In GDK is het bewaren van de scrollgeschiedenis gegarandeerd, is het GdkDevice API opgeschoond en is de scheiding van apparaten in master en slave stopgezet.
- Een nieuwe GDK-backend voor macOS is toegevoegd.
- Voor Windows is een nieuwe GDK-rendering backend voorgesteld, gebaseerd op , voor het vertalen van OpenGL ES-aanroepen naar OpenGL, Direct3D 9/11, Desktop GL en Vulkan.
Bron: opennet.ru
