GTK 3.96, experimentell utgåva av GTK 4, publicerad

10 månader efter från förr i tiden testsläpp presenteras GTK 3.96, en ny experimentell utgåva av den kommande stabila utgåvan av GTK 4. GTK 4-grenen utvecklas som en del av en ny utvecklingsprocess som försöker förse applikationsutvecklare med en stabil och stödd API under flera år som kan användas utan rädsla att behöva skriva om applikationen var sjätte månad på grund av att ändra API i nästa GTK-gren. Tills GTK 4 är helt stabiliserat, rekommenderas att applikationer som erbjuds användare fortsätter att byggas med hjälp av grenen GTK 3.24.

Den huvudsakliga förändringar i GTK 3.96:

  • I API GSK (GTK Scene Kit), som ger rendering av grafiska scener via OpenGL och Vulkan, har man arbetat med fel, som har blivit lättare att identifiera tack vare det nya felsökningsverktyget gtk4-node-editor, som låter dig ladda och visa rendering av nod i ett serialiserat format (kan sparas i inspektionsläge GTK inspector), och jämför även renderingsresultaten när du använder olika backends;

    GTK 3.96, experimentell utgåva av GTK 4, publicerad

  • 3D-transformationsmöjligheterna har förts till en nivå som gör att du kan skapa animationseffekter som en roterande kub;

    GTK 3.96, experimentell utgåva av GTK 4, publicerad

  • fullständigt omskriven Broadway GDK-backend utformad för att återge GTK-biblioteksutdata i ett webbläsarfönster. Den gamla Broadway-implementeringen passade inte in i renderingsmetoderna som föreslagits i GTK 4 (istället för utdata till en buffert använder den nu en modell baserad på renderingsnoder, där utdata är sammansatt i form av ett träd av högnivåoperationer, bearbetas effektivt av GPU:n med OpenGL och Vulkan).
    Det nya Broadway-alternativet konverterar renderingsnoder till DOM-noder med CSS-stilar för rendering av gränssnittet i webbläsaren. Varje nytt skärmtillstånd behandlas som en förändring i DOM-trädet i förhållande till det tidigare tillståndet, vilket minskar storleken på data som överförs till fjärrklienten. 3D-transformationer och grafiska effekter implementeras genom CSS-transformeringsegenskapen;

  • GDK fortsätter att implementera API:er utformade med Wayland-protokollet i åtanke, och rensa upp X11-baserade API:er eller flytta dem till en separat X11-backend. Det sker framsteg i arbetet med att gå bort från användningen av barnytor och globala koordinater. Stöd för GDK_SURFACE_SUBSURFACE har tagits bort från GDK;
  • Omstruktureringen av koden för att utföra Dra-och-släpp-operationer fortsatte, inklusive de föreslagna separata GdkDrag- och GdkDrop-objekten;
  • Händelsehanteringen har förenklats och används nu endast för input. De återstående händelserna ersätts med separata signaler, till exempel, istället för utdatahändelser, föreslås signalen "GdkSurface::render", istället för konfigurationshändelser - "GdkSurface::size-changed", istället för kartläggningshändelser - "GdkSurface: :mapped", istället för gdk_event_handler_set() - "GdkSurface::event";
  • GDK-backend för Wayland har lagt till stöd för ett portalgränssnitt för åtkomst till GtkSettings-inställningar. För att arbeta med inmatningsmetoder har stöd för text-input-unstable-v3-protokolltillägget föreslagits;
  • För utveckling av widgets introduceras ett nytt GtkLayoutManager-objekt med implementering av ett system för att styra layouten av element beroende på layouten av det synliga området. GtkLayoutManager ersätter underordnade egenskaper i GTK-behållare som GtkBox och GtkGrid. Flera färdiga layouthanterare föreslås: GtkBinLayout för enkla behållare med ett underordnat element, GtkBoxLayout för linjärt justerade underordnade element, GtkGridLayout för anpassning av underordnade element till ett rutnät, GtkFixedLayout för godtycklig positionering av underordnade element, GtkCustomLayout baserat på translating_CustomLayout för traditionella element. hanterare;
  • Allmänt tillgängliga objekt för sidvisning av underordnade element har lagts till i widgetarna GtkAssistant, GtkStack och GtkNotebook, till vilka de icke-layoutrelaterade underordnade egenskaperna för dessa widgetar överförs. Eftersom alla befintliga underordnade egenskaper har konverterats till vanliga egenskaper, layoutegenskaper eller flyttats till sidobjekt, har stödet för underordnade egenskaper tagits bort helt från GtkContainer;
  • Kärnfunktionen GtkEntry har flyttats till en ny GtkText-widget, som också inkluderar ett förbättrat GtkEditable-redigeringsgränssnitt. Alla befintliga datainmatningsunderklasser har gjorts om som GtkEditable-implementationer baserat på den nya GtkText-widgeten;
  • Lade till en ny GtkPasswordEntry-widget för lösenordsinmatningsformulär;
  • GtkWidgets har lagt till möjligheten att transformera underordnade element med linjära transformationsmetoder specificerade via CSS eller argumentet gtk_widget_allocate till GskTransform. Den angivna funktionen används redan i GtkFixed-widgeten;
  • Nya listgenereringsmodeller har lagts till: GtkMapListModel, GtkSliceListModel, GtkSortListModel, GtkSelectionModel och GtkSingleSelection. I framtiden planerar vi att lägga till stöd för listmodeller till GtkListView;
  • GtkBuilder har lagt till möjligheten att ställa in objektegenskaper lokalt (inline), istället för att använda länkar efter identifierare;
  • Lade till kommando till gtk4-builder-tool för att konvertera UI-filer från GTK 3 till GTK 4;
  • Stöd för nyckelteman, tabellmenyer och kombinationsrutor har upphört. GtkInvisible-widgeten har tagits bort.

    Källa: opennet.ru

Lägg en kommentar