Dopo quattro mesi di sviluppo, è stata rilasciata la versione del toolkit multipiattaforma per la creazione di interfacce grafiche — GTK 4.6.0. GTK 4 si sviluppa all'interno di un nuovo processo di sviluppo che mira a fornire agli sviluppatori applicazioni un'API stabile e supportata per diversi anni, senza il timore di dover modificare le applicazioni ogni sei mesi a causa di cambiamenti nell'API in una nuova versione di GTK.
Tra i miglioramenti più significativi in GTK 4.6:
- È stato rimosso il vecchio motore di rendering basato su OpenGL, sostituito dal nuovo motore NGL, incluso di default a partire da GTK 4.2 e che offre prestazioni superiori. NGL è stato rinominato in GL. È stato riscritto il codice di caricamento delle texture, migliorata la compatibilità con i formati delle immagini e gli spazi colorimetrico.
- Il codice relativo al calcolo delle dimensioni degli elementi e al layout dei widget è stato notevolmente rielaborato. In precedenza, le proprietà GtkWidget::halign e GtkWidget::valign, nell'allineamento degli elementi, si basavano sulle dimensioni predefinite dei widget. Questo poteva portare ad occupare spazio aggiuntivo quando si specificava solo una dimensione nella modalità di riempimento dell'area. Con GTK 4.6, è stata introdotta la possibilità di misurare in modo relativo la dimensione mancante (ad esempio, se viene impostata la larghezza, può essere presa in considerazione l'altezza disponibile durante il posizionamento), rendendo i widget più snelli senza occupare spazio superfluo.


- Nel widget GtkBox è stata implementata la possibilità di calcolare la dimensione individuale degli elementi figlio. Se in passato lo spazio veniva distribuito equamente tra i widget figlio in base alla loro dimensione predefinita, ora in GTK 4.6 il rendering considera la dimensione effettiva degli elementi figlio.
- Nel widget GtkLabel è stata introdotta la supporto per l'andamento del testo su un numero arbitrario di righe, permettendo la creazione di etichette strette che occupano lo spazio verticale disponibile.
- Nella classe GtkWindow è stata aggiunta la possibilità di adattare la dimensione minima al rapporto di proporzione, consentendo di modificare liberamente le dimensioni della finestra senza timore che diventi troppo piccola. È stata aggiunta la proprietà "Window.titlebar".
- È stato aggiunto un nuovo avviso che informa sull'incongruenza delle dimensioni in caso di ritorno di un widget con dimensioni errate. Gtk-CRITICAL **: 00:48:33.319: gtk_widget_measure: asserzione ‘for_size >= minimum opposite size’ non riuscita: 23 >= 42.
- Nel widget GtkTextView è stata aggiunta la supporto per la tabulazione allineata a destra o al centro. È stato aggiunto il supporto per la conversione del testo e il rispetto dell'altezza della linea. È stata migliorata l'operazione di scorrimento fino al segnaposto specificato. È stato migliorato il trattamento dell'annullamento delle modifiche. Risolti i problemi durante l'inserimento di testo dagli appunti e con la scelta del luogo per mostrare l'interfaccia di inserimento Emoji.
- Nel widget GtkMenuButton è stata fornita la possibilità di definire elementi figlio personalizzati.
- In GtkBuilder è stata accelerata la precompilazione dei modelli.
- È stato aggiunto il segnale activate per attivare i widget GtkComboBox e GtkDropDown.
- Nel widget GtkDropDown è stata aggiunta la proprietà show-arrow per controllare la visualizzazione della freccia.

- In GtkPopoverMenu, the use-markup attribute has been added to utilize Pango markup in the menu text.
- The style system now supports CSS properties font-variant-caps for displaying small caps and text-transform for text transformation.
- A GtkSymbolicPaintable interface has been added to manage the color of symbolic icons.
- The inspection interface has been enhanced to track Drag-and-Drop operations, display the current input module, add a clipboard content viewer, implement a graph for visualizing gtk_widget_measure(), and enable event logging. Support for Drag-and-Drop mode has been added to the gtk4-node-editor utility.
- For Wayland, a setting has been implemented to activate high-contrast mode. Support for the wl_seat v7 protocol has been added.
- A gtk-hint-font-metrics setting has been added to approximate text rendering behavior to GTK3.
- For X11-based systems, support for control gestures on touchpads (with XInput 2.4) has been added, along with improved window dragging behavior by the title bar.
- Nella libreria GDK, che fornisce uno strato tra GTK e il sottosistema grafico, è stata migliorata la verifica delle versioni di OpenGL e OpenGL ES. È stato aggiunto il supporto per lo spazio colore HSL. Le librerie libpng, libjpeg e libtiff sono ora utilizzate direttamente per il caricamento delle texture e l'elaborazione dei formati delle immagini. Il codice di inizializzazione EGL è stato spostato sul lato frontend. Sono stati aggiunti nuovi API: gdk_texture_new_from_bytes, gdk_texture_new_from_filename, gdk_texture_download_float, gdk_texture_save_to_png_bytes, gdk_texture_save_to_tiff, gdk_texture_save_to_tiff_bytes e gdk_display_create_gl_context.
- Il ramo "master" nel repository Git è stato rinominato in "main".
Fonte: opennet.ru



