GTK 3.96, eksperimentel udgivelse af GTK 4, offentliggjort

10 måneder efter af fortiden testudgivelse præsenteret GTK 3.96, en ny eksperimentel udgivelse af den kommende stabile udgivelse af GTK 4. GTK 4-grenen udvikles som en del af en ny udviklingsproces, der forsøger at give applikationsudviklere en stabil og understøttet API i flere år, som kan bruges uden frygt af at skulle omskrive applikationen hver sjette måned på grund af ændring af API i den næste GTK-gren. Indtil GTK 4 er fuldt stabiliseret, anbefales det, at applikationer, der tilbydes brugere, fortsætter med at blive bygget ved hjælp af grenen GTK 3.24.

The main ændringer i GTK 3.96:

  • I API GSK (GTK Scene Kit), som leverer gengivelse af grafiske scener via OpenGL og Vulkan, er der blevet arbejdet på fejl, som er blevet nemmere at identificere takket være det nye fejlfindingsværktøj gtk4-node-editor, som giver dig mulighed for at indlæse og vise gengivelse af node i et serialiseret format (kan gemmes i inspektionstilstand GTK inspector), og sammenlign også gengivelsesresultaterne ved brug af forskellige backends;

    GTK 3.96, eksperimentel udgivelse af GTK 4, offentliggjort

  • 3D-transformationsmuligheder er blevet bragt til et niveau, der giver dig mulighed for at skabe animationseffekter såsom en roterende terning;

    GTK 3.96, eksperimentel udgivelse af GTK 4, offentliggjort

  • fuldt omskrevet Broadway GDK-backend designet til at gengive GTK-biblioteksoutput i et webbrowservindue. Den gamle Broadway-implementering passede ikke ind i renderingsmetoderne foreslået i GTK 4 (i stedet for output til en buffer, bruger den nu en model baseret på render noder, hvor outputtet er sammensat i form af et træ af operationer på højt niveau, effektivt behandlet af GPU'en ved hjælp af OpenGL og Vulkan).
    Den nye Broadway-indstilling konverterer gengivelsesnoder til DOM-noder med CSS-stile til gengivelse af grænsefladen i browseren. Hver ny skærmtilstand behandles som en ændring i DOM-træet i forhold til den tidligere tilstand, hvilket reducerer størrelsen af ​​data, der sendes til fjernklienten. 3D-transformationer og grafiske effekter implementeres gennem CSS-transformationsegenskaben;

  • GDK fortsætter med at implementere API'er designet med Wayland-protokollen i tankerne og rydde op i X11-baserede API'er eller flytte dem til en separat X11-backend. Der er fremskridt i arbejdet med at komme væk fra brugen af ​​børneflader og globale koordinater. Understøttelse af GDK_SURFACE_SUBSURFACE er blevet fjernet fra GDK;
  • Refaktorering af koden i forbindelse med udførelse af træk-og-slip-operationer fortsatte, inklusive de foreslåede separate GdkDrag- og GdkDrop-objekter;
  • Hændelseshåndtering er blevet forenklet og bruges nu kun til input. De resterende hændelser erstattes med separate signaler, for eksempel foreslås signalet "GdkSurface::render" i stedet for outputhændelser, i stedet for konfigurationshændelser - "GdkSurface::size-changed", i stedet for kortlægningshændelser - "GdkSurface: :mapped", i stedet for gdk_event_handler_set() - "GdkSurface::event";
  • GDK-backend til Wayland har tilføjet understøttelse af en portalgrænseflade til adgang til GtkSettings-indstillinger. For at arbejde med inputmetoder er der foreslået understøttelse af tekst-input-unstable-v3-protokoludvidelsen;
  • Til udvikling af widgets introduceres et nyt GtkLayoutManager objekt med implementering af et system til styring af layoutet af elementer afhængigt af layoutet af det synlige område. GtkLayoutManager erstatter underordnede egenskaber i GTK-containere såsom GtkBox og GtkGrid. Der foreslås flere færdige layoutadministratorer: GtkBinLayout til simple containere med ét underordnet element, GtkBoxLayout til lineært justerede underordnede elementer, GtkGridLayout til justering af underordnede elementer til et gitter, GtkFixedLayout til vilkårlig placering af underordnede elementer, GtkCustomLayout baseret på translating_CustomLalocyout traditionelle element handlere;
  • Offentligt tilgængelige objekter til sidevisning af underordnede elementer er blevet tilføjet til GtkAssistant, GtkStack og GtkNotebook widgets, hvortil de ikke-layout-relaterede underordnede egenskaber for disse widgets overføres. Da alle eksisterende underordnede egenskaber er blevet konverteret til almindelige egenskaber, layoutegenskaber eller flyttet til sideobjekter, er understøttelse af underordnede egenskaber blevet fjernet helt fra GtkContainer;
  • Kernefunktionaliteten i GtkEntry er blevet flyttet til en ny GtkText-widget, som også inkluderer en forbedret GtkEditable-redigeringsgrænseflade. Alle eksisterende datainput underklasser er blevet omdannet som GtkEditable implementeringer baseret på den nye GtkText widget;
  • Tilføjet en ny GtkPasswordEntry-widget til adgangskodeindtastningsformularer;
  • GtkWidgets har tilføjet muligheden for at transformere underordnede elementer ved hjælp af lineære transformationsmetoder specificeret via CSS eller gtk_widget_allocate argumentet til GskTransform. Den angivne funktion er allerede anvendt i GtkFixed-widgetten;
  • Nye listegenerationsmodeller er blevet tilføjet: GtkMapListModel, GtkSliceListModel, GtkSortListModel, GtkSelectionModel og GtkSingleSelection. I fremtiden planlægger vi at tilføje understøttelse af listemodeller til GtkListView;
  • GtkBuilder har tilføjet muligheden for at indstille objektegenskaber lokalt (inline), i stedet for at bruge links efter identifikator;
  • Tilføjet kommando til gtk4-builder-værktøj til at konvertere UI-filer fra GTK 3 til GTK 4;
  • Understøttelse af nøgletemaer, tabelmenuer og kombinationsbokse er afbrudt. GtkInvisible-widgetten er blevet fjernet.

    Kilde: opennet.ru

Tilføj en kommentar