Utgivningen av GTK 3.99.0 markerade slutförandet av den funktionalitet som planeras för GTK 4

publiceras sista experimentella versionen av ramverket GTK 3.99.0, som implementerar alla funktioner som planeras för GTK 4. GTK 4-grenen utvecklas som en del av en ny utvecklingsprocess som försöker förse applikationsutvecklare med ett stabilt och stödd API under flera år som kan användas utan rädsla för att behöva skriv om applikationer var sjätte månad på grund av API-ändringar i nästa GTK-gren. GTK 4 är planerad att släppas före årets slut.

Av det mesta signifikant ändringar в GTK 4 du kan notera:

  • Metod för att lägga ut element baserat på begränsningar (begränsningslayout), där platsen och storleken på underordnade element bestäms baserat på avståndet till gränserna och storleken på andra element.
  • En renderare baserad på Vulkans grafik-API som implementerar shaders för många av de resurskrävande CSS-element som används i GTK-widgets.
  • Интеграция GSK (GTK Scene Kit) med möjlighet att rendera grafiska scener via OpenGL och Vulkan.
  • Organisationen av renderingen har reviderats - istället för utmatning till en buffert används nu en modell baserad på renderingsnoder, där utdata är arrangerat i form av ett träd av högnivåoperationer, effektivt bearbetat av GPU:n med OpenGL och Vulkan.
  • fonder för flexibel hantering av ingångsfokusändringar.
  • En moderniserad händelseleveransmodell som eliminerar behovet av underfönster vid dirigering av ingångshändelser. Behovet av att implementera en ny modell är förknippat med en mer aktiv användning av animationseffekter, vars rendering bör göras utan att ändra layouten för synliga element och följaktligen utan ett underfönster.
  • GDK API har gjorts om med tanke på att använda Wayland-protokollet och relaterade koncept. X11 och Wayland-baserade funktioner har flyttats till separata backends.
  • En större rensning av API:et har genomförts, inklusive borttagningen av klasserna GtkMenu, GtkMenuBar och GtkToolbar, till förmån för GMenu och alternativ baserade på popover-menyer.
  • GtkTextView och andra indatawidgetar har en inbyggd ångra stack.
  • Lade till en ny GtkNative-klass för widgets som har sin egen visningsyta och kan fungera separat på den första nivån, utan att vara knuten till överordnade widgets.
  • Nya widgets har lagts till, inklusive GtkPicture, GtkText, GtkPasswordEntry, GtkListView, GtkGridView, GtkColumnView och en Emoji-displaywidget.
  • För utveckling av widgets introduceras ett nytt GtkLayoutManager-objekt med implementering av ett system för att styra layouten av element beroende på storleken på det synliga området. GtkLayoutManager ersätter underordnade egenskaper i GTK-behållare som GtkBox och GtkGrid.
  • 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 utgångshändelser, föreslås "GdkSurface::render"-signalen, och istället för konfigurationshändelser erbjuds "GdkSurface::size-changed".
  • Lade till ett nytt abstraktionslager GdkPaintable, som representerar objekt som kan ritas var som helst i valfri storlek, utan att behöva sortera layoutlager.
  • Broadways backend har skrivits om så att utdata från GTK-biblioteket kan renderas i ett webbläsarfönster.
  • API:et som är kopplat till att utföra Dra-och-släpp-operationer har designats om, inklusive de föreslagna separata GdkDrag- och GdkDrop-objekten.

Förbättringar jämfört med den tidigare testversionen:

  • Den gamla implementeringen av Accessibility API för personer med funktionshinder har tagits bort, ersatt av en ny version baserad på specifikationen ARIA och widgeten GtkAccessible.
  • Lade till stöd för redigerbara etiketter (GtkEditableLabel).
  • Nya listmodeller har föreslagits för att visa bokmärken (GtkBookmarkList), strängar (GtkStringList) och urvalsblock (GtkBitset).
  • GtkTreeView-widgeten har förmågan att redigera celler.
  • Implementeringen av rullning har förbättrats i GtkGridView och GtkListView, stöd för automatisk rullning och automatisk expansion har lagts till.
  • GtkWidget påskyndar avsevärt behandlingen av olika åtgärder.
  • Lade till stöd för inkrementell rullning och filtrering till GtkFilterListModel och GtkSortListModel.
  • Inspector har lagt till stöd för att inspektera listmodeller och möjligheten att direkt navigera mellan objekt.
  • I GDK har rullningshistoriken sparats, GdkDevice API har rensats och uppdelningen av enheter i master och slav har stoppats.
  • Lade till en ny GDK-backend för macOS.
  • En ny GDK-renderingsbackend baserad på VINKEL, mellanskikt att översätta OpenGL ES-anrop till OpenGL, Direct3D 9/11, Desktop GL och Vulkan.

Källa: opennet.ru

Lägg en kommentar