l'ultima versione sperimentale del framework , in cui sono implementate tutte le funzionalità previste per GTK 4. Il ramo GTK 4 si sta sviluppando nell'ambito di un nuovo processo di sviluppo che cerca di fornire agli sviluppatori di applicazioni un'API stabile e supportata per diversi anni, utilizzabile senza temere che ogni sei mesi sia necessario rifare le applicazioni a causa di modifiche all'API in un nuovo ramo di GTK. Il rilascio di GTK 4 è previsto entro la fine dell'anno.
Tra i più in si possono notare:
- Il metodo di disposizione degli elementi basato su vincoli () in cui la posizione e la dimensione degli elementi figli sono definite in base alla distanza dai bordi e dalle dimensioni di altri elementi.
- Modulo di rendering basato sull'API grafica Vulkan, in cui sono implementati shader per molti elementi CSS ad alta intensità di risorse, utilizzati nei widget GTK.
- Integrazione (GTK Scene Kit) con funzionalità di rendering di scene grafiche tramite OpenGL e Vulkan.
- Riorganizzata l'architettura di rendering: invece di un output su buffer, ora viene utilizzato un modello basato su nodi di rendering (render nodes), in cui l'output è assemblato in forma di albero di operazioni di alto livello, elaborate in modo efficiente dalla GPU tramite OpenGL e Vulkan.
- per una gestione flessibile della modifica del focus di input.
- Modello di consegna eventi modernizzato, che consente di evitare l'uso di subwindow nella gestione degli eventi di input. La necessità di implementare un nuovo modello è legata a un uso più attivo degli effetti di animazione, la cui visualizzazione deve avvenire senza cambiare la disposizione degli elementi visibili e, di conseguenza, senza una subwindow.
- API GDK riprogettato con un occhio all'uso del protocollo Wayland e ai concetti associati. Le funzionalità legate a X11 e Wayland sono state trasferite in .
- È stata eseguita una grande pulizia dell'API, comprese le rimozioni delle classi GtkMenu, GtkMenuBar e GtkToolbar, sostituite da GMenu e varianti basate su menu a comparsa (popover).
- In GtkTextView e altri widget di input è stata integrata una pila per il ripristino delle modifiche (undo).
- Aggiunta una nuova classe GtkNative per i widget che hanno una superficie di visualizzazione propria e possono operare separatamente al primo livello, senza vincoli ai widget genitori.
- Aggiunti nuovi widget, tra cui GtkPicture, GtkText, GtkPasswordEntry, GtkListView, GtkGridView, GtkColumnView e un widget per la visualizzazione delle Emoji.
- Per lo sviluppo dei widget è stato introdotto un nuovo oggetto GtkLayoutManager che implementa un sistema di gestione del layout degli elementi in base alle dimensioni dell'area visibile. GtkLayoutManager sostituisce le proprietà figlie nei contenitori GTK, come GtkBox e GtkGrid.
- Semplificata la gestione degli eventi, ora utilizzati solo per l'input. Gli altri eventi sono stati sostituiti con segnali separati, ad esempio, al posto degli eventi di output è stato introdotto il segnale «GdkSurface::render» e invece degli eventi di configurazione «GdkSurface::size-changed».
- Aggiunto un nuovo livello di astrazione GdkPaintable, che rappresenta oggetti che possono essere disegnati ovunque con qualsiasi dimensione, senza la necessità di eseguire ordinamenti dei livelli di layout.
- Riscritto il backend Broadway, che consente di disegnare l'output della libreria GTK in una finestra del browser web.
- Ristrutturato l'API relativo alle operazioni di Drag-and-Drop, inclusi oggetti separati GdkDrag e GdkDrop.
Migliorie rispetto alla precedente versione di test:
- Rimossa la vecchia implementazione dell'API di accessibilità per persone con disabilità, sostituita da una nuova versione basata sulla specifica e sul widget GtkAccessible.
- Aggiunta la supporto per etichette modificabili (GtkEditableLabel).
- Introdotti nuovi modelli di lista per visualizzare segnalibri (GtkBookmarkList), stringhe (GtkStringList) e blocchi di selezione (GtkBitset).
- Nel widget GtkTreeView è stata implementata la possibilità di modificare le celle.
- In GtkGridView e GtkListView è stata migliorata l'implementazione dello scorrimento, con l'aggiunta del supporto per lo scorrimento automatico e l'autocollasso.
- Nel GtkWidget è stata notevolmente accelerata la gestione delle varie azioni.
- In GtkFilterListModel e GtkSortListModel è stato aggiunto il supporto per lo scorrimento e filtraggio incrementali.
- Nell'Inspector è stato aggiunto il supporto per l'ispezione dei modelli di lista e la possibilità di navigare direttamente tra gli oggetti.
- In GDK è stata garantita la conservazione della cronologia di scorrimento, è stato pulito l'API GdkDevice, cessando la suddivisione dei dispositivi in master e slave.
- Aggiunto un nuovo backend GDK per macOS.
- Per Windows è stato proposto un nuovo backend GDK di rendering basato su , per tradurre le chiamate OpenGL ES in OpenGL, Direct3D 9/11, Desktop GL e Vulkan.
Fonte: opennet.ru
