De release van GTK 3.99.0 markeerde de voltooiing van de functionaliteit die gepland was voor GTK 4

gepubliceerd definitieve experimentele release van het raamwerk GTK 3.99.0, dat alle functies implementeert die gepland zijn voor GTK 4. De GTK 4-tak wordt ontwikkeld als onderdeel van een nieuw ontwikkelingsproces dat probeert applicatie-ontwikkelaars te voorzien van een stabiele en ondersteunde API voor meerdere jaren die kan worden gebruikt zonder de angst om herschrijf applicaties elke zes maanden vanwege API-wijzigingen in de volgende GTK-vertakking. GTK 4 zal naar verwachting vóór het einde van het jaar verschijnen.

Van het meest significant veranderingen в GTK 4 je kunt opmerken:

  • Methode voor het opmaken van elementen op basis van beperkingen (beperking lay-out), waarin de locatie en grootte van onderliggende elementen wordt bepaald op basis van de afstand tot de randen en de grootte van andere elementen.
  • Een renderer gebaseerd op de Vulkan grafische API die shaders implementeert voor veel van de resource-intensieve CSS-elementen die in GTK-widgets worden gebruikt.
  • integratie GSK (GTK Scene Kit) met de mogelijkheid om grafische scènes weer te geven via OpenGL en Vulkan.
  • De organisatie van het renderen is herzien - in plaats van uitvoer naar een buffer wordt nu een model gebruikt dat is gebaseerd op renderknooppunten, waarbij de uitvoer is gerangschikt in de vorm van een boom van bewerkingen op hoog niveau, efficiënt verwerkt door de GPU met behulp van OpenGL en Vulcan.
  • fondsen voor flexibele afhandeling van wijzigingen in de invoerfocus.
  • Een gemoderniseerd model voor het leveren van gebeurtenissen dat de noodzaak van subvensters bij het routeren van invoergebeurtenissen elimineert. De noodzaak om een ​​nieuw model te implementeren gaat gepaard met een actiever gebruik van animatie-effecten, waarvan de weergave moet gebeuren zonder de lay-out van zichtbare elementen te veranderen en dienovereenkomstig zonder een subvenster.
  • De GDK API is opnieuw ontworpen met het oog op het gebruik van het Wayland-protocol en gerelateerde concepten. X11- en Wayland-gebaseerde functies zijn verplaatst naar aparte backends.
  • Er is een grote opschoning van de API uitgevoerd, waaronder het verwijderen van de klassen GtkMenu, GtkMenuBar en GtkToolbar, ten gunste van GMenu en opties gebaseerd op popover-menu's.
  • GtkTextView en andere invoerwidgets hebben een ingebouwde stapel voor ongedaan maken.
  • Een nieuwe GtkNative-klasse toegevoegd voor widgets die hun eigen weergaveoppervlak hebben en afzonderlijk kunnen werken op het eerste niveau, zonder gebonden te zijn aan bovenliggende widgets.
  • Er zijn nieuwe widgets toegevoegd, waaronder GtkPicture, GtkText, GtkPasswordEntry, GtkListView, GtkGridView, GtkColumnView en een Emoji-weergavewidget.
  • Voor de ontwikkeling van widgets wordt een nieuw GtkLayoutManager-object geïntroduceerd met de implementatie van een systeem voor het regelen van de lay-out van elementen, afhankelijk van de grootte van het zichtbare gebied. GtkLayoutManager vervangt onderliggende eigenschappen in GTK-containers zoals GtkBox en GtkGrid.
  • De afhandeling van gebeurtenissen is vereenvoudigd en wordt nu alleen voor invoer gebruikt. De resterende gebeurtenissen worden vervangen door afzonderlijke signalen. In plaats van uitvoergebeurtenissen wordt bijvoorbeeld het signaal “GdkSurface::render” voorgesteld, en in plaats van configuratiegebeurtenissen wordt “GdkSurface::size-changed” aangeboden.
  • Een nieuwe abstractielaag GdkPaintable toegevoegd, die objecten vertegenwoordigt die overal en op elk formaat kunnen worden getekend, zonder de noodzaak om lay-outlagen te sorteren.
  • De Broadway-backend is herschreven zodat de uitvoer van de GTK-bibliotheek in een webbrowservenster kan worden weergegeven.
  • De API die is gekoppeld aan het uitvoeren van slepen-en-neerzetten-bewerkingen is opnieuw ontworpen, inclusief de voorgestelde afzonderlijke GdkDrag- en GdkDrop-objecten.

Verbeteringen ten opzichte van de vorige testrelease:

  • 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 ARIA en de GtkAccessible-widget.
  • Ondersteuning toegevoegd voor bewerkbare labels (GtkEditableLabel).
  • Er zijn nieuwe lijstmodellen voorgesteld voor het weergeven van bladwijzers (GtkBookmarkList), strings (GtkStringList) en selectieblokken (GtkBitset).
  • De GtkTreeView-widget heeft de mogelijkheid om cellen te bewerken.
  • De implementatie van scrollen is verbeterd in GtkGridView en GtkListView, ondersteuning voor automatisch scrollen en automatisch uitvouwen is toegevoegd.
  • GtkWidget versnelt de verwerking van verschillende acties aanzienlijk.
  • Ondersteuning toegevoegd voor incrementeel scrollen en filteren naar GtkFilterListModel en GtkSortListModel.
  • Inspector heeft ondersteuning toegevoegd voor het inspecteren van lijstmodellen en de mogelijkheid om direct tussen objecten te navigeren.
  • In GDK is de scrollgeschiedenis opgeslagen, de GdkDevice API is opgeschoond en de scheiding van apparaten in master en slave is gestopt.
  • Een nieuwe GDK-backend voor macOS toegevoegd.
  • Een nieuwe GDK-rendering-backend gebaseerd op HOEK, tussenlagen om OpenGL ES-aanroepen te vertalen naar OpenGL, Direct3D 9/11, Desktop GL en Vulkan.

Bron: opennet.ru

Voeg een reactie