Utgivelsen av GTK 3.99.0 markerte fullføringen av funksjonaliteten som var planlagt for GTK 4

publisert endelig eksperimentell utgivelse av rammeverket GTK 3.99.0, som implementerer alle funksjonene som er planlagt for GTK 4. GTK 4-grenen utvikles som en del av en ny utviklingsprosess som forsøker å gi applikasjonsutviklere et stabilt og støttet API i flere år som kan brukes uten frykt for å måtte omskriv applikasjoner hver sjette måned fordi for API-endringer i neste GTK-gren. GTK 4 er planlagt utgitt før slutten av året.

Av de fleste betydelige Endringer в GTK 4 du kan merke:

  • Metode for å legge ut elementer basert på begrensninger (begrensningsoppsett), der plasseringen og størrelsen på underordnede elementer bestemmes basert på avstanden til grensene og størrelsen på andre elementer.
  • En renderer basert på Vulkan graphics API som implementerer shaders for mange av de ressurskrevende CSS-elementene som brukes i GTK-widgets.
  • integrering GSK (GTK Scene Kit) med muligheten til å gjengi grafiske scener via OpenGL og Vulkan.
  • Organiseringen av gjengivelsen har blitt revidert - i stedet for utdata til en buffer, brukes nå en modell basert på gjengivelsesnoder, der utdataene er ordnet i form av et tre med operasjoner på høyt nivå, effektivt behandlet av GPU ved bruk av OpenGL og Vulkan.
  • midler for fleksibel håndtering av inputfokusendringer.
  • En modernisert hendelsesleveringsmodell som eliminerer behovet for undervinduer ved ruting av inputhendelser. Behovet for å implementere en ny modell er forbundet med en mer aktiv bruk av animasjonseffekter, hvis gjengivelse bør gjøres uten å endre utformingen av synlige elementer og følgelig uten et undervindu.
  • GDK API har blitt redesignet med tanke på å bruke Wayland-protokollen og relaterte konsepter. X11 og Wayland-baserte funksjoner er flyttet til separate backends.
  • En større opprydding av API har blitt utført, inkludert fjerning av klassene GtkMenu, GtkMenuBar og GtkToolbar, til fordel for GMenu og alternativer basert på popover-menyer.
  • GtkTextView og andre inndatawidgeter har en innebygd angrestabel.
  • Lagt til en ny GtkNative-klasse for widgets som har sin egen skjermoverflate og kan fungere separat på første nivå, uten å være knyttet til overordnede widgets.
  • Nye widgeter er lagt til, inkludert GtkPicture, GtkText, GtkPasswordEntry, GtkListView, GtkGridView, GtkColumnView og en Emoji-skjermwidget.
  • For utvikling av widgeter introduseres et nytt GtkLayoutManager-objekt med implementering av et system for å kontrollere utformingen av elementer avhengig av størrelsen på det synlige området. GtkLayoutManager erstatter underordnede egenskaper i GTK-beholdere som GtkBox og GtkGrid.
  • Hendelseshåndtering er forenklet og brukes nå kun til input. De resterende hendelsene erstattes med separate signaler, for eksempel, i stedet for utgangshendelser, foreslås "GdkSurface::render"-signalet, og i stedet for konfigurasjonshendelser tilbys "GdkSurface::size-changed".
  • Lagt til et nytt abstraksjonslag GdkPaintable, som representerer objekter som kan tegnes hvor som helst i alle størrelser, uten behov for å sortere layoutlag.
  • Broadway-backend har blitt omskrevet for å tillate utdata fra GTK-biblioteket å bli gjengitt i et nettleservindu.
  • API-en knyttet til å utføre Dra-og-slipp-operasjoner har blitt redesignet, inkludert de foreslåtte separate GdkDrag- og GdkDrop-objektene.

Forbedringer sammenlignet med forrige testutgivelse:

  • Den gamle implementeringen av Accessibility API for funksjonshemmede er fjernet, erstattet av en ny versjon basert på spesifikasjonen ARIA og GtkAccessible-widgeten.
  • Lagt til støtte for redigerbare etiketter (GtkEditableLabel).
  • Nye listemodeller er foreslått for visning av bokmerker (GtkBookmarkList), strenger (GtkStringList) og utvalgsblokker (GtkBitset).
  • GtkTreeView-widgeten har muligheten til å redigere celler.
  • Implementeringen av rulling er forbedret i GtkGridView og GtkListView, støtte for automatisk rulling og automatisk utvidelse er lagt til.
  • GtkWidget øker betydelig hastighet på behandlingen av ulike handlinger.
  • Lagt til støtte for inkrementell rulling og filtrering til GtkFilterListModel og GtkSortListModel.
  • Inspector har lagt til støtte for inspeksjon av listemodeller og muligheten til å navigere direkte mellom objekter.
  • I GDK har rullehistorikk blitt lagret, GdkDevice API er renset, og separasjonen av enheter i master og slave har blitt stoppet.
  • Lagt til en ny GDK-backend for macOS.
  • En ny GDK-gjengivelsesbackend basert på VINKEL, lag å oversette OpenGL ES-anrop til OpenGL, Direct3D 9/11, Desktop GL og Vulkan.

Kilde: opennet.ru

Legg til en kommentar