Dopo otto mesi di sviluppo, è stata rilasciata la versione 4.8.0 del toolkit multipiattaforma per la creazione di interfacce grafiche utente — GTK 4. GTK 4 evolve all'interno di un nuovo processo di sviluppo che mira a fornire agli sviluppatori un'API stabile e supportata per diversi anni, da utilizzare senza il timore di dover rielaborare le applicazioni a causa di cambiamenti nell'API in una nuova versione di GTK ogni sei mesi.
Tra i miglioramenti più significativi in GTK 4.8:
- Modificato lo stile dell'interfaccia di selezione dei colori (GtkColorChooser).
- Nell'interfaccia di selezione dei caratteri (GtkFontChooser) è stato migliorato il supporto per le funzionalità del formato OpenType.
- Nel motore CSS è stata ottimizzata la ricomposizione degli elementi associati a un genitore e consentito l'uso di valori non interi per definire la dimensione dello spazio tra i caratteri.
- I dati Emoji sono stati aggiornati alla versione CLDR 40 (Unicode 14). Aggiunto il supporto per nuove localizzazioni.
- Nel tema, le icone sono state aggiornate e migliorata la leggibilità delle etichette di testo selezionato.
- Nella libreria GDK, che fornisce un'interfaccia tra GTK e il sottosistema grafico, è stata ottimizzata la conversione dei formati pixel. Nei sistemi con driver NVIDIA è stato utilizzato l'estensione EGL EGL_KHR_swap_buffers_with_damage.
- Nella libreria GSK (GTK Scene Kit), che offre funzionalità di rendering di scene grafiche tramite OpenGL e Vulkan, è stato implementato il supporto per la gestione di aree visibili grandi (viewport). Sono state proposte librerie per il rendering di glifi utilizzando texture.
- Per Wayland è stato implementato il supporto per il protocollo 'xdg-activation', che consente di trasferire il focus tra diverse superfici di primo livello (ad esempio, tramite xdg-activation un'app può spostare il focus su un'altra).
- Nel widget GtkTextView è stata ridotta la quantità di situazioni che portano a ridisegni ripetitivi ed è stata implementata la funzione GetCharacterExtents per determinare l'area di un glifo che rappresenta un carattere nel testo (la funzione è richiesta da strumenti per persone con disabilità).
- Nella classe GtkViewport, utilizzata per organizzare lo scorrimento nei widget, è stata attivata di default la modalità 'scroll-to-focus', in cui il contenuto scorre automaticamente per mantenere in vista l'elemento al quale è impostato il focus di input.
- Nel widget GtkSearchEntry, che mostra un'area per l'inserimento di query di ricerca, è stata fornita la possibilità di configurare un ritardo tra l'ultima pressione di un tasto e l'invio del segnale di modifica del contenuto (GtkSearchEntry::search-changed).
- Nel widget GtkCheckButton è stata aggiunta la possibilità di assegnare un proprio widget figlio con un pulsante.
- Nel widget GtkPicture è stata aggiunta la proprietà 'content-fit' per adattare il contenuto a una dimensione specificata.
- Nel widget GtkColumnView è stata ottimizzata la performance dello scorrimento.
- Nel widget GtkTreeStore è stato consentito l'extraction dei dati ad albero da file nel formato ui.
- Nella classe GtkInscription, responsabile della visualizzazione di testo in un'area specifica, è stato aggiunto un nuovo widget per la visualizzazione di elenchi. È stata aggiunta un'applicazione dimostrativa con un esempio di utilizzo di GtkInscription.
- Nel widget GtkTreePopover è stato aggiunto il supporto per lo scorrimento.
- Nel widget GtkLabel è stata aggiunta la supporto per le tabulazioni e la possibilità di attivare le etichette premendo i caratteri legati all'etichetta sulla tastiera.
- Nel widget GtkListView è stato implementato il supporto per le proprietà '::n-items' e '::item-type'.
- Nel sistema di input è stata fornita la supporto per gestori di parametri dimensionali (GDK_SCROLL_UNIT_WHEEL, GDK_SCROLL_UNIT_SURFACE).
- Per la piattaforma macOS è stato aggiunto il supporto per la modalità a schermo intero e la riproduzione di video utilizzando OpenGL. Migliorata la rilevazione dei monitor, il funzionamento in configurazioni multi-monitor, il posizionamento delle finestre e la scelta della dimensione per la finestra di dialogo del file. Per il rendering sono stati utilizzati CALayer e IOSurface. Garantita l'esecuzione delle applicazioni in background.
- Sulla piattaforma Windows è stato migliorato il posizionamento delle finestre sugli schermi HiDPI, è stata aggiunta un'interfaccia per la selezione dei colori e realizzato il supporto per eventi del mouse ad alta risoluzione, migliorato il supporto per i touchpad.
- È stata aggiunta al tool gtk4-builder-tool il comando screenshot per creare screenshot, utilizzato per generare screenshot per la documentazione.
- Garantita l'installazione dello strumento gtk4-node-editor.
- Ampliate le capacità del debugger. È stata implementata la visualizzazione di dati aggiuntivi delle applicazioni e consentito l'esame delle proprietà di PangoAttrList durante l'ispezione. È stata consentita l'ispezione degli ispettori. Aggiunto il supporto per la modalità 'GTK_DEBUG=invert-text-dir'. Invece della variabile di ambiente GTK_USE_PORTAL è stata proposta la modalità 'GDK_DEBUG=portals'. Migliorata la reattività dell'interfaccia di ispezione.
- Nel backend ffmpeg è stato aggiunto il supporto per l'audio.
- Il limite di memoria nel caricatore di immagini JPEG è aumentato a 300 MB.
Fonte: opennet.ru
