lansarea experimentală finală a framework-ului , care integrează toate capacitățile prevăzute pentru GTK 4. Ramura GTK 4 se dezvoltă în cadrul unui nou proces de dezvoltare, care încearcă să ofere dezvoltatorilor de aplicații un API stabil și susținut pe parcursul mai multor ani, ce poate fi folosit fără teama de a reface aplicațiile la fiecare șase luni din cauza schimbărilor API într-o nouă ramură GTK. Lansarea GTK 4 este planificată pentru sfârșitul anului.
Dintre cele mai în se pot menționa:
- Metoda de aranjare a elementelor pe baza constrângerilor (), în care poziția și dimensiunea elementelor fiice sunt determinate prin distanța față de margini și dimensiunea altor elemente.
- Modul de redare bazat pe API-ul grafic Vulkan, în care sunt implementate shader-e pentru multe elemente consumatoare de resurse CSS utilizate în widgeturile GTK.
- Integrare (GTK Scene Kit) cu capacități de redare a scenelor grafice prin OpenGL și Vulkan.
- Reorganizată arta redării — în loc de a afișa în buffer, acum se aplică un model bazat pe noduri de redare (render nodes), prin care ieșirea este compusă sub forma unui arbore de operațiuni de înalt nivel, eficient procesate de GPU cu ajutorul OpenGL și Vulkan.
- pentru procesarea flexibilă a schimbării focalizării de intrare.
- Modelul modernizat de livrare a evenimentelor, care permite evitarea sub-fereastrei în rutarea evenimentelor de intrare. Necesitatea de a implementa un nou model se datorează utilizării mai active a efectelor de animație, ale căror redări trebuie realizate fără schimbarea aranjamentului elementelor vizibile și, prin urmare, fără sub-fereastră.
- API-ul GDK a fost reproiectat având în vedere utilizarea protocolului Wayland și a conceptelor asociate. Funcționalitățile legate de X11 și Wayland au fost mutate în .
- A fost realizată o curățare extinsă a API-ului, inclusiv eliminarea claselor GtkMenu, GtkMenuBar și GtkToolbar, în locul cărora au fost propuse GMenu și opțiuni bazate pe meniuri care se deschid (popover).
- În GtkTextView și alte widget-uri de intrare a fost integrat un stivă pentru anularea modificărilor (undo).
- A fost adăugat o nouă clasă GtkNative pentru widget-uri care au propria suprafață de afișare și capabile să funcționeze separat la primul nivel, fără a fi legate de widget-urile părinte.
- Au fost adăugate widget-uri noi, inclusiv GtkPicture, GtkText, GtkPasswordEntry, GtkListView, GtkGridView, GtkColumnView, precum și un widget pentru afișarea Emoji.
- Pentru dezvoltarea widget-urilor a fost introdus un nou obiect GtkLayoutManager care implementează un sistem de gestionare a aranjamentului elementelor în funcție de dimensiunea zonei vizibile. GtkLayoutManager a înlocuit proprietățile fiice din containerele GTK, precum GtkBox și GtkGrid.
- A fost simplificată gestionarea evenimentelor, care acum sunt utilizate doar pentru intrare. Celelalte evenimente au fost înlocuite cu semnale separate, de exemplu, în locul evenimentelor de ieșire este oferit semnalul „GdkSurface::render”, iar în locul evenimentelor de configurare – „GdkSurface::size-changed”.
- A fost adăugat un nou nivel de abstracție GdkPaintable, care reprezintă obiecte ce pot fi desenate oriunde cu orice dimensiune, fără a fi necesară sortarea straturilor de aranjament.
- Backend-ul Broadway a fost rescris, permițând redarea ieșirii bibliotecii GTK într-o fereastră de browser web.
- API-ul legat de realizarea operațiunilor Drag-and-Drop a fost revizuit, iar acum sunt oferite obiecte separate GdkDrag și GdkDrop.
Îmbunătățiri față de versiunea de testare anterioară:
- A fost eliminată vechea implementare a Accessibility API pentru persoanele cu dizabilități, înlocuind-o cu o nouă variantă bazată pe specificația și widget-ul GtkAccessible.
- A fost adăugată suport pentru etichete editabile (GtkEditableLabel).
- Au fost propuse noi modele de liste pentru afișarea semnelor de carte (GtkBookmarkList), a șirurilor (GtkStringList) și a blocurilor de selecție (GtkBitset).
- Widget-ul GtkTreeView a implementat posibilitatea de a edita celulele.
- În GtkGridView și GtkListView a fost îmbunătățită implementarea derulării, adăugându-se suport pentru derularea automată și auto-dezalveizarea.
- În GtkWidget, procesarea diferitelor acțiuni a fost semnificativ accelerată.
- În GtkFilterListModel și GtkSortListModel a fost adăugat suport pentru derularea incrementală și filtrare.
- În Inspector a fost adăugat suport pentru inspectarea modelelor de liste și posibilitatea de navigare directă între obiecte.
- În GDK s-a asigurat păstrarea istoricului derulării, s-a curățat API-ul GdkDevice, iar separarea dispozitivelor în master și slave a fost oprită.
- A fost adăugat un nou backend GDK pentru macOS.
- Pentru Windows a fost propus un nou backend GDK care realizează desenarea pe baza , pentru a traduce apelurile OpenGL ES în OpenGL, Direct3D 9/11, Desktop GL și Vulkan.
Sursa: opennet.ro
