După patru luni de dezvoltare, a fost publicată lansarea unui set de instrumente multi-platformă pentru crearea unei interfețe grafice de utilizator - GTK 4.6.0. GTK 4 este dezvoltat ca parte a unui nou proces de dezvoltare care încearcă să ofere dezvoltatorilor de aplicații un API stabil și acceptat timp de câțiva ani, care poate fi utilizat fără teama de a fi nevoie să rescrie aplicațiile la fiecare șase luni din cauza modificărilor API-ului în următorul GTK ramură.
Printre cele mai notabile îmbunătățiri ale GTK 4.6 se numără:
- Vechiul motor de randare bazat pe OpenGL a fost eliminat, înlocuit cu noul motor de randare NGL, furnizat implicit începând cu GTK 4.2, care oferă performanțe mai bune. NGL redenumit în GL. Codul de încărcare a texturii a fost rescris, suportul pentru formatele de imagine și spațiile de culoare a fost îmbunătățit.
- Codul asociat cu calcularea dimensiunilor elementelor și aspectului widgetului a fost reproiectat în mod semnificativ. Anterior, proprietățile GtkWidget::halign și GtkWidget::valign s-au bazat pe dimensiunea implicită a widget-ului la plasarea elementelor, care, atunci când se specifica o singură dimensiune în modul de umplere a zonei, ar putea avea ca rezultat ca elementul să ocupe spațiu suplimentar. GTK 4.6 introduce capacitatea de a măsura dimensiunea lipsă una față de alta (de exemplu, dacă este specificată o lățime, plasarea poate ține cont de înălțimea disponibilă), permițând widget-urilor să fie mai subțiri fără a ocupa spațiu inutil.


- Widgetul GtkBox are capacitatea de a calcula dimensiunea individuală a elementelor copil. În timp ce anterior spațiul era distribuit în mod egal între widget-urile copil în funcție de dimensiunea lor implicită, GTK 4.6 ia acum în considerare dimensiunea reală a copiilor la ieșire.
- Widgetul GtkLabel include suport pentru împachetarea textului pe orice număr de linii, permițându-vă să creați etichete înguste care ocupă spațiul vertical disponibil.
- Clasa GtkWindow a adăugat capacitatea de a ajusta dimensiunea minimă la raportul de aspect, ceea ce vă permite să redimensionați în mod arbitrar fereastra fără teama că va fi prea mică. S-a adăugat proprietatea „Window.titlebar”.
- S-a adăugat un nou avertisment despre nepotrivirile de dimensiune dacă widget-ul returnează o dimensiune incorectă. Gtk-CRITICAL **: 00:48:33.319: gtk_widget_measure: afirmația „for_size >= minimum opposite size” a eșuat: 23 >= 42
- Widgetul GtkTextView acceptă acum file aliniate la dreapta sau aliniate în centru. S-a adăugat suport pentru conversia textului și înălțimea liniilor. Defilare îmbunătățită la operațiunea de etichetă specificată. Gestionarea îmbunătățită a modificărilor anulate. S-au rezolvat probleme la lipirea textului din clipboard și la alegerea unde să afișați interfața de lipire Emoji.
- Widgetul GtkMenuButton oferă posibilitatea de a-și defini propriile elemente copil.
- Precompilarea șabloanelor a fost accelerată în GtkBuilder.
- S-a adăugat semnal de activare pentru a activa widget-urile GtkComboBox și GtkDropDown.
- S-a adăugat proprietatea show-arrow widget-ului GtkDropDown pentru a controla dacă săgeata este afișată.

- S-a adăugat atributul use-markup la GtkPopoverMenu pentru a utiliza marcajul Pango în textul meniului.
- Sistemul de stil acceptă proprietățile CSS font-variant-caps pentru afișarea literelor majuscule mici și text-transform pentru transformarea textului.
- S-a adăugat interfața GtkSymbolicPaintable pentru a controla culoarea pictogramelor simbol.
- S-a adăugat suport pentru urmărirea operațiunilor Drag-and-Drop la interfața de inspecție, a fost afișat modulul de intrare curent, a fost adăugat un vizualizator de conținut clipboard, a fost implementat un grafic pentru vizualizarea gtk_widget_measure() și capacitatea de a înregistra evenimente a fost furnizat. S-a adăugat suport pentru modul Drag-and-Drop la utilitarul gtk4-node-editor.
- Pentru Wayland, a fost implementată o setare pentru a activa modul de contrast ridicat. S-a adăugat suport pentru protocolul wl_seat v7.
- S-a adăugat setarea gtk-hint-font-metrics pentru a aduce redarea textului mai aproape de comportamentul GTK3.
- Pentru sistemele bazate pe X11, s-a adăugat suport pentru gesturile de control touchpad (atunci când utilizați XInput 2.4) și un comportament îmbunătățit de tragere a titlului ferestrei.
- Biblioteca GDK, care oferă un strat între GTK și subsistemul grafic, a îmbunătățit verificarea versiunilor OpenGL și OpenGL ES. S-a adăugat suport pentru spațiul de culoare HSL. La încărcarea texturilor și la procesarea formatelor de imagine, bibliotecile libpng, libjpeg și libtiff sunt direct implicate. Codul de inițializare EGL a fost mutat în partea frontală. S-au adăugat noi API-uri: 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_tes_to_texture_bytes_to_created_bytes și gdk_texture_save_to_tiff
- Ramura „master” din depozitul Git a fost redenumită „principal”.
Sursa: opennet.ru



