GTK 3.96, versione sperimentale di GTK 4, pubblicata

10 mesi dopo del passato rilascio di prova presentata GTK 3.96, una nuova versione sperimentale della prossima versione stabile di GTK 4. Il ramo GTK 4 è in fase di sviluppo come parte di un nuovo processo di sviluppo che tenta di fornire agli sviluppatori di applicazioni un'API stabile e supportata per diversi anni che può essere utilizzata senza timore di dover riscrivere l'applicazione ogni sei mesi a causa del cambiamento dell'API nel prossimo ramo GTK. Fino a quando GTK 4 non sarà completamente stabilizzato, si consiglia di continuare a creare le applicazioni offerte agli utenti utilizzando il ramo GTK 3.24.

Il principale modifiche nella GTK 3.96:

  • Nell'API GSK (GTK Scene Kit), che prevede il rendering delle scene grafiche tramite OpenGL e Vulkan, è stato lavorato sugli errori, diventati più facili da identificare grazie al nuovo strumento di debug gtk4-node-editor, che permette di caricare e visualizzare le nodo di rendering in un formato serializzato (può essere salvato in modalità ispezione ispettore GTK) e confronta anche i risultati del rendering quando si utilizzano backend diversi;

    GTK 3.96, versione sperimentale di GTK 4, pubblicata

  • Le funzionalità di trasformazione 3D sono state portate a un livello che consente di creare effetti di animazione come un cubo rotante;

    GTK 3.96, versione sperimentale di GTK 4, pubblicata

  • completamente riscritto Backend GDK Broadway progettato per eseguire il rendering dell'output della libreria GTK in una finestra del browser web. La vecchia implementazione di Broadway non si adattava ai metodi di rendering proposti in GTK 4 (invece dell'output in un buffer, ora utilizza un modello basato su nodi di rendering, dove l'output è composto sotto forma di un albero di operazioni di alto livello, elaborati in modo efficiente dalla GPU utilizzando OpenGL e Vulkan).
    La nuova opzione Broadway converte i nodi di rendering in nodi DOM con stili CSS per il rendering dell'interfaccia nel browser. Ogni nuovo stato dello schermo viene elaborato come una modifica nell'albero DOM rispetto allo stato precedente, riducendo la dimensione dei dati trasmessi al client remoto. Le trasformazioni 3D e gli effetti grafici sono implementati tramite la proprietà di trasformazione CSS;

  • GDK continua a implementare API progettate pensando al protocollo Wayland e a ripulire le API basate su X11 o a spostarle su un backend X11 separato. Ci sono progressi nel lavoro per abbandonare l'uso di superfici secondarie e di coordinate globali. Il supporto per GDK_SURFACE_SUBSURFACE è stato rimosso da GDK;
  • È continuato il refactoring del codice associato all'esecuzione delle operazioni di drag-and-drop, inclusi gli oggetti GdkDrag e GdkDrop separati proposti;
  • La gestione degli eventi è stata semplificata e ora viene utilizzata solo per l'input. Gli eventi rimanenti vengono sostituiti con segnali separati, ad esempio, invece degli eventi di output, viene proposto il segnale “GdkSurface::render”, invece degli eventi di configurazione - “GdkSurface::size-changed”, invece degli eventi di mappatura - “GdkSurface: :mapped”, invece di gdk_event_handler_set() - "GdkSurface::event";
  • Il backend GDK per Wayland ha aggiunto il supporto per un'interfaccia del portale per accedere alle impostazioni di GtkSettings. Per lavorare con i metodi di input, è stato proposto il supporto per l'estensione del protocollo text-input-unstable-v3;
  • Per lo sviluppo dei widget viene introdotto un nuovo oggetto GtkLayoutManager con l'implementazione di un sistema di controllo della disposizione degli elementi in funzione della disposizione dell'area visibile. GtkLayoutManager sostituisce le proprietà figlie nei contenitori GTK come GtkBox e GtkGrid. Vengono proposti diversi gestori di layout già pronti: GtkBinLayout per contenitori semplici con un elemento figlio, GtkBoxLayout per elementi figli allineati linearmente, GtkGridLayout per allineare elementi figli a una griglia, GtkFixedLayout per il posizionamento arbitrario di elementi figli, GtkCustomLayout per tradurre elementi tradizionali in base a size_allocate gestori;
  • Ai widget GtkAssistant, GtkStack e GtkNotebook sono stati aggiunti oggetti accessibili pubblicamente per la visualizzazione della pagina degli elementi secondari, ai quali vengono trasferite le proprietà secondarie non correlate al layout di questi widget. Poiché tutte le proprietà figlie esistenti sono state convertite in proprietà regolari, proprietà di layout o spostate in oggetti di pagina, il supporto per le proprietà figlie è stato completamente rimosso da GtkContainer;
  • La funzionalità principale di GtkEntry è stata spostata in un nuovo widget GtkText, che include anche un'interfaccia di modifica GtkEditable migliorata. Tutte le sottoclassi di input dati esistenti sono state rifatte come implementazioni GtkEditable basate sul nuovo widget GtkText;
  • Aggiunto un nuovo widget GtkPasswordEntry per i moduli di inserimento password;
  • GtkWidgets ha aggiunto la possibilità di trasformare gli elementi figlio utilizzando metodi di trasformazione lineare specificati tramite CSS o l'argomento gtk_widget_allocate a GskTransform. La funzionalità specificata è già applicata nel widget GtkFixed;
  • Sono stati aggiunti nuovi modelli di generazione di liste: GtkMapListModel, GtkSliceListModel, GtkSortListModel, GtkSelectionModel e GtkSingleSelection. In futuro prevediamo di aggiungere il supporto per i modelli di elenco a GtkListView;
  • GtkBuilder ha aggiunto la possibilità di impostare le proprietà dell'oggetto localmente (inline), invece di utilizzare i collegamenti per identificatore;
  • Aggiunto comando a gtk4-builder-tool per convertire i file UI da GTK 3 a GTK 4;
  • Il supporto per temi chiave, menu tabellari e caselle combinate è stato interrotto. Il widget GtkInvisible è stato rimosso.

    Fonte: opennet.ru

Aggiungi un commento