GTK 3.96, experimentele release van GTK 4, gepubliceerd

10 maanden later uit het verleden proefuitgave ingediend GTK 3.96, een nieuwe experimentele release van de komende stabiele release van GTK 4. De GTK 4-tak wordt ontwikkeld als onderdeel van een nieuw ontwikkelingsproces dat probeert applicatie-ontwikkelaars een aantal jaren lang een stabiele en ondersteunde API te bieden die zonder angst kan worden gebruikt van het moeten herschrijven van de applicatie elke zes maanden vanwege een wijziging van de API in de volgende GTK-vestiging. Totdat GTK 4 volledig is gestabiliseerd, wordt aanbevolen dat applicaties die aan gebruikers worden aangeboden, verder worden gebouwd met behulp van de branch GTK 3.24.

De belangrijkste veranderingen in GTK 3.96:

  • In API GSK (GTK Scene Kit), waarmee grafische scènes via OpenGL en Vulkan kunnen worden weergegeven, is er gewerkt aan fouten, die gemakkelijker te identificeren zijn geworden dankzij de nieuwe foutopsporingstool gtk4-node-editor, waarmee u de weergaveknooppunt in een geserialiseerd formaat (kan worden opgeslagen in de inspectiemodus GTK Inspector), en ook de weergaveresultaten vergelijken bij gebruik van verschillende backends;

    GTK 3.96, experimentele release van GTK 4, gepubliceerd

  • De mogelijkheden voor 3D-transformatie zijn naar een niveau gebracht waarmee u animatie-effecten kunt creëren, zoals een roterende kubus;

    GTK 3.96, experimentele release van GTK 4, gepubliceerd

  • geheel herschreven Broadway GDK-backend ontworpen om GTK-bibliotheekuitvoer in een webbrowservenster weer te geven. De oude Broadway-implementatie paste niet in de weergavemethoden die in GTK 4 worden voorgesteld (in plaats van uitvoer naar een buffer wordt nu een model gebruikt dat is gebaseerd op renderknooppunten, waarbij de uitvoer is samengesteld in de vorm van een boom met bewerkingen op hoog niveau, efficiënt verwerkt door de GPU met behulp van OpenGL en Vulkan).
    De nieuwe Broadway-optie converteert renderknooppunten naar DOM-knooppunten met CSS-stijlen voor het weergeven van de interface in de browser. Elke nieuwe schermstatus wordt verwerkt als een verandering in de DOM-boom ten opzichte van de vorige status, waardoor de omvang van de gegevens die naar de externe client worden verzonden, kleiner wordt. 3D-transformaties en grafische effecten worden geïmplementeerd via de CSS-transformatie-eigenschap;

  • GDK blijft API's implementeren die zijn ontworpen met het Wayland-protocol in gedachten, en op X11 gebaseerde API's opschonen of verplaatsen naar een aparte X11-backend. Er is vooruitgang in het werk om af te stappen van het gebruik van onderliggende oppervlakken en globale coördinaten. Ondersteuning voor GDK_SURFACE_SUBSURFACE is verwijderd uit GDK;
  • Het herstructureren van de code die verband houdt met het uitvoeren van slepen-en-neerzetten-bewerkingen werd voortgezet, inclusief de voorgestelde afzonderlijke GdkDrag- en GdkDrop-objecten;
  • 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, in plaats van configuratiegebeurtenissen - “GdkSurface::size-changed”, in plaats van mapping-gebeurtenissen - “GdkSurface: :mapped”, in plaats van gdk_event_handler_set() - "GdkSurface::event";
  • De GDK-backend voor Wayland heeft ondersteuning toegevoegd voor een portalinterface voor toegang tot GtkSettings-instellingen. Om met invoermethoden te werken, is ondersteuning voor de protocolextensie text-input-unstable-v3 voorgesteld;
  • 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 lay-out van het zichtbare gebied. GtkLayoutManager vervangt onderliggende eigenschappen in GTK-containers zoals GtkBox en GtkGrid. Er worden verschillende kant-en-klare lay-outmanagers voorgesteld: GtkBinLayout voor eenvoudige containers met één kindelement, GtkBoxLayout voor lineair uitgelijnde onderliggende elementen, GtkGridLayout voor het uitlijnen van onderliggende elementen op een raster, GtkFixedLayout voor willekeurige positionering van onderliggende elementen, GtkCustomLayout voor het vertalen van traditionele elementen op basis van size_allocate begeleiders;
  • Publiek toegankelijke objecten voor paginaweergave van onderliggende elementen zijn toegevoegd aan de GtkAssistant-, GtkStack- en GtkNotebook-widgets, waarnaar de niet-Layout-gerelateerde onderliggende eigenschappen van deze widgets worden overgebracht. Omdat alle bestaande onderliggende eigenschappen zijn geconverteerd naar reguliere eigenschappen of lay-outeigenschappen, of zijn verplaatst naar pagina-objecten, is de ondersteuning voor onderliggende eigenschappen volledig verwijderd uit GtkContainer;
  • De kernfunctionaliteit van GtkEntry is verplaatst naar een nieuwe GtkText-widget, die ook een verbeterde GtkEditable-bewerkingsinterface bevat. Alle bestaande subklassen voor gegevensinvoer zijn opnieuw gemaakt als GtkEditable-implementaties op basis van de nieuwe GtkText-widget;
  • Een nieuwe GtkPasswordEntry-widget toegevoegd voor formulieren voor wachtwoordinvoer;
  • GtkWidgets heeft de mogelijkheid toegevoegd om onderliggende elementen te transformeren met behulp van lineaire transformatiemethoden gespecificeerd via CSS of het gtk_widget_allocate argument aan GskTransform. De opgegeven functie is al toegepast in de GtkFixed-widget;
  • Er zijn nieuwe modellen voor het genereren van lijsten toegevoegd: GtkMapListModel, GtkSliceListModel, GtkSortListModel, GtkSelectionModel en GtkSingleSelection. In de toekomst zijn we van plan ondersteuning voor lijstmodellen toe te voegen aan GtkListView;
  • GtkBuilder heeft de mogelijkheid toegevoegd om objecteigenschappen lokaal (inline) in te stellen, in plaats van links op identificatie te gebruiken;
  • Opdracht toegevoegd aan gtk4-builder-tool om UI-bestanden van GTK 3 naar GTK 4 te converteren;
  • Ondersteuning voor belangrijke thema's, menu's in tabelvorm en keuzelijsten met invoervak ​​is stopgezet. De GtkInvisible-widget is verwijderd.

    Bron: opennet.ru

Voeg een reactie