Efter 10 måneder siden testudgave , en ny eksperimentel version af den fremtidige stabile udgave af GTK 4. GTK 4-grenen udvikles i henhold til en ny udviklingsproces, der forsøger at give applikationsudviklere en stabil og vedholdende API i flere år, så de ikke behøver at omarbejde deres applikation hver sjette måned på grund af ændringer i API'et i den næste GTK-gren. Indtil GTK 4 er helt stabiliseret, anbefales det at fortsætte med at kompilere applikationer til brugere ved hjælp af grenen .
Vigtige i GTK 3.96:
- I API (GTK Scene Kit), der muliggør rendering af grafiske scener via OpenGL og Vulkan, har fået fejlrettelser, og det er blevet lettere at finde dem takket være det nye fejlfindingværktøj gtk4-node-editor, som gør det muligt at indlæse og vise et renderingsnode i et serialiseret format (kan gemmes i GTK inspector's inspektionsmode) samt sammenligne resultatet af renderingen ved brug af forskellige backend;
- 3D-transformationsmulighederne er blevet forbedret til at muliggøre animationseffekter som en roterende kube;
- Fuldstændig GDK-backend Broadway, der er beregnet til at gengive output fra GTK-biblioteket i et webbrowservindue. Den gamle implementering af Broadway kunne ikke tilpasses de foreslåede renderingsmetoder i GTK 4 (i stedet for output til en buffer anvendes nu en nodes baseret model for rendering, hvor output organiseres som et træ af høj-niveau operationer, der effektivt behandles af GPU'en ved hjælp af OpenGL og Vulkan).
Den nye version af Broadway omdanner renderingnodes til DOM-noder med CSS-stile for output af interface i browseren. Hver ny skærmtilstand behandles som en ændring af DOM-træet i forhold til den tidligere tilstand, hvilket gør det muligt at reducere størrelsen af de data, der sendes til klienten. 3D-transformationer og grafiske effekter implementeres gennem CSS-egenskaben transform; - Implementeringen af API'er i GDK fortsætter, med fokus på brugen af Wayland-protokollen, samt oprydning i API'er knyttet til X11 eller flytning af disse til en separat X11-backend. Der rapporteres om fremskridt med at bevæge sig væk fra brugen af underoverflader og globale koordinater. Støtten for GDK_SURFACE_SUBSURFACE er blevet fjernet fra GDK.
- Refaktoreringen af koden relateret til Drag-and-Drop-operationer fortsætter, herunder forslag om separate objekter GdkDrag og GdkDrop.
- Behandlingen af hændelser er blevet forenklet, hvilket nu kun anvendes til input. Andre hændelser er erstattet med separate signaler, for eksempel er signalet 'GdkSurface::render' foreslået i stedet for output-hændelser, 'GdkSurface::size-changed' i stedet for indstillingshændelser, 'GdkSurface::mapped' i stedet for matchende hændelser, og 'GdkSurface::event' i stedet for gdk_event_handler_set().
- Der er tilføjet support til portal-grænsefladen i GDK-backenden for Wayland for adgang til indstillingerne i GtkSettings. For at arbejde med inputmetoder er der foreslået support for udvidelsen af protokollen text-input-unstable-v3.
- Der er præsenteret et nyt objekt GtkLayoutManager til udvikling af widgets, som implementerer et layoutstyringssystem baseret på størrelsen af det synlige område. GtkLayoutManager afløser under-egenskaber i GTK-containere som GtkBox og GtkGrid. Flere færdige layoutmanagere er blevet foreslået: GtkBinLayout til enkle containere med ét under-element, GtkBoxLayout til lineært justerede under-elementer, GtkGridLayout til justering af under-elementer i et gitter, GtkFixedLayout til vilkårlig placering af under-elementer, og GtkCustomLayout til at translitterere traditionelle elementer baseret på size_allocate-behandlere.
- I widgets som GtkAssistant, GtkStack og GtkNotebook er der tilføjet offentligt tilgængelige objekter til sidevisning af under-elementer, hvortil de layout-uafhængige egenskaber af disse widgets er blevet flyttet. Da alle eksisterende under-egenskaber er blevet konverteret til normale egenskaber, er layout-egenskaberne enten flyttet til sideobjekter eller fjernet fra GtkContainer, som nu helt har fjernet støtten til under-egenskaber.
- Den grundlæggende funktionalitet af GtkEntry er blevet overført til det nye widget GtkText, som også inkluderer det udvidede redigeringsinterface GtkEditable. Alle eksisterende datainput underklasser er blevet omarbejdet som implementeringer af GtkEditable baseret på det nye widget GtkText.
- Der er tilføjet en ny GtkPasswordEntry-widget til formularer til indtastning af adgangskoder;
- I GtkWidgets er der tilføjet mulighed for at transformere underliggende elementer ved hjælp af transformationsmetoder defineret via CSS eller argumentet gtk_widget_allocate i GskTransform. Denne mulighed er allerede taget i brug i GtkFixed-widgeten;
- Der er tilføjet nye modeller til listegenerering: GtkMapListModel, GtkSliceListModel, GtkSortListModel, GtkSelectionModel og GtkSingleSelection. Der planlægges at tilføje understøttelse af liste-modeller i GtkListView i fremtiden;
- I GtkBuilder er der tilføjet mulighed for at angive egenskaber for objekter direkte (inline) i stedet for ved hjælp af identifikatorreferencer;
- I gtk4-builder-tool er der tilføjet en kommando til at konvertere UI-filer fra GTK 3 til GTK 4;
- Understøttelsen af nøgletemaer, fanemenuer og kombinationsbokse er stoppet. GtkInvisible-widgeten er blevet fjernet.
Kilde: opennet.ru
