Il rilascio di GTK 3.99.0 segna la disponibilità delle funzionalità pianificate per GTK 4

Pubblicato l'ultima versione sperimentale del framework GTK 3.99.0, in cui sono implementate tutte le funzionalità previste per GTK 4. Il ramo GTK 4 si sviluppa all'interno di un nuovo processo di sviluppo, che cerca di fornire agli sviluppatori di applicazioni un'API stabile e supportata per diversi anni, senza il timore di dover rifare le applicazioni ogni sei mesi a causa delle modifiche all'API in un nuovo ramo di GTK. Il rilascio di GTK 4 è previsto entro la fine dell'anno.

Tra le più significative le modifiche in GTK 4 si possono evidenziare:

  • Metodo di layout degli elementi basato su vincoli (constraint layout), in cui la posizione e la dimensione degli elementi figli vengono determinate in base alla distanza dai confini e alle dimensioni degli 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 GSK (GTK Scene Kit) con funzionalità per il rendering di scene grafiche tramite OpenGL e Vulkan.
  • Ristrutturata l'organizzazione del rendering: invece dell'output su buffer, ora viene utilizzato un modello basato sui nodi di rendering, in cui l'output è composto sotto forma di albero di operazioni ad alto livello, elaborate in modo efficiente dalla GPU tramite OpenGL e Vulkan.
  • Strumenti per la gestione flessibile del cambiamento del focus di input.
  • Modello di consegna degli eventi modernizzato, che consente di non utilizzare subwindow nella gestione degli eventi di input. La necessità di implementare un nuovo modello deriva dall'uso più attivo degli effetti di animazione, il cui rendering deve avvenire senza cambiare il layout degli elementi visibili e, quindi, senza subwindow.
  • API GDK riprogettato tenendo conto dell'uso del protocollo Wayland e dei concetti associati. Le funzionalità legate a X11 e Wayland sono state trasferite a backend separati.
  • Eseguita una grossa pulizia dell'API, incluse l'eliminazione delle classi GtkMenu, GtkMenuBar e GtkToolbar, a favore di GMenu e delle opzioni basate su menu a comparsa (popover).
  • Integra il stack di undo in GtkTextView e altri widget di input.
  • È stata aggiunta una nuova classe GtkNative per i widget che hanno una propria superficie di visualizzazione e possono funzionare in modo autonomo al primo livello, senza essere legati ai widget genitori.
  • Sono stati aggiunti nuovi widget, tra cui GtkPicture, GtkText, GtkPasswordEntry, GtkListView, GtkGridView, GtkColumnView, oltre a 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.
  • È stata semplificata la gestione degli eventi, che ora vengono utilizzati solo per l'input. Gli altri eventi sono stati sostituiti da segnali separati; ad esempio, invece di eventi di output è stato introdotto il segnale 'GdkSurface::render', mentre per eventi di ridimensionamento - 'GdkSurface::size-changed'.
  • È stato aggiunto un nuovo livello di astrazione GdkPaintable, che rappresenta oggetti che possono essere disegnati ovunque con qualsiasi dimensione, senza la necessità di ordinare i livelli di layout.
  • È stato riscritto il backend Broadway, che consente di disegnare l'output della libreria GTK in una finestra del browser web.
  • L'API associato all'esecuzione delle operazioni di Drag-and-Drop è stato rielaborato, introducendo oggetti separati per GdkDrag e GdkDrop.

Miglioramenti rispetto alla precedente versione di test:

  • È stata rimossa la vecchia implementazione dell'Accessibility API per le persone con disabilità, sostituita con una nuova basata sulla specifica ARIA e sul widget GtkAccessible.
  • È stato aggiunto il supporto per le etichette modificabili (GtkEditableLabel).
  • Sono stati proposti nuovi modelli di elenchi per visualizzare i segnalibri (GtkBookmarkList), le stringhe (GtkStringList) e i blocchi di selezione (GtkBitset).
  • Nel widget GtkTreeView è stata implementata la possibilità di modificare le celle.
  • In GtkGridView e GtkListView è stata migliorata l'implementazione della scorrimento, con aggiunta del supporto per la scorrimento automatico e l'espansione automatica.
  • In GtkWidget è stata accelerata notevolmente la gestione delle varie azioni.
  • In GtkFilterListModel e GtkSortListModel è stato aggiunto il supporto per la scorrimento e la filtrazione incrementale.
  • Nell'Inspector è stato aggiunto il supporto all'ispezione dei modelli di lista e la possibilità di navigazione diretta tra gli oggetti.
  • In GDK è stata garantita la conservazione della cronologia di scorrimento, è stata effettuata una pulizia dell'API GdkDevice, interrompendo la distinzione tra dispositivi master e slave.
  • È stato aggiunto un nuovo backend GDK per macOS.
  • È stato proposto un nuovo backend di rendering GDK per Windows basato su ANGLE, strato intermedio per la traduzione delle chiamate OpenGL ES in OpenGL, Direct3D 9/11, Desktop GL e Vulkan.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS 🔥 Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS | ProHoster