version expérimentale finale du framework , dans laquelle toutes les fonctionnalités prévues pour GTK 4 sont mises en œuvre. La branche GTK 4 évolue dans le cadre d'un nouveau processus de développement qui cherche à fournir aux développeurs d'applications une API stable et maintenue pendant plusieurs années, qu'ils peuvent utiliser sans craindre de devoir réécrire leurs applications tous les six mois en raison des changements de l'API dans la nouvelle branche de GTK. La sortie de GTK 4 est prévue d'ici la fin de l'année.
Parmi les dans on peut noter :
- Méthode de disposition des éléments basée sur des contraintes (), où la position et la taille des éléments enfants sont déterminées en fonction de la distance aux bords et de la taille des autres éléments.
- Un module de rendu basé sur l'API graphique Vulkan, qui met en œuvre des shaders pour de nombreux éléments CSS gourmands en ressources utilisés dans les widgets GTK.
- Intégration (GTK Scene Kit) avec des fonctionnalités de rendu de scènes graphiques via OpenGL et Vulkan.
- L'organisation du rendu a été repensée — au lieu d'exporter vers un tampon, un modèle basé sur des nœuds de rendu est désormais utilisé, où la sortie est composée sous forme d'arbre d'opérations de haut niveau, efficacement traitées par le GPU à l'aide d'OpenGL et Vulkan.
- pour le traitement flexible du changement de focus d'entrée.
- Un modèle de livraison d'événements modernisé, permettant d'éviter les sous-fenêtres lors du routage des événements d'entrée. La nécessité de mettre en œuvre un nouveau modèle est liée à une utilisation plus active des effets d'animation, dont le rendu doit être effectué sans changer la disposition des éléments visibles et, par conséquent, sans sous-fenêtre.
- L'API de GDK a été repensée en tenant compte de l'utilisation du protocole Wayland et des concepts qui y sont associés. Les fonctionnalités associées à X11 et Wayland ont été déplacées vers .
- Un grand nettoyage de l'API a été réalisé, notamment la suppression des classes GtkMenu, GtkMenuBar et GtkToolbar, remplacées par GMenu et des variantes basées sur des menus contextuels (popover).
- Une pile de gestion des modifications (undo) a été intégrée dans GtkTextView et d'autres widgets d'entrée.
- Une nouvelle classe GtkNative a été ajoutée pour les widgets ayant leur propre surface d'affichage et pouvant fonctionner indépendamment au premier niveau, sans lien avec les widgets parent.
- De nouveaux widgets ont été ajoutés, y compris GtkPicture, GtkText, GtkPasswordEntry, GtkListView, GtkGridView, GtkColumnView, ainsi qu'un widget pour afficher des Emoji.
- Un nouvel objet GtkLayoutManager a été introduit pour le développement de widgets, implémentant un système de gestion de la disposition des éléments en fonction de la taille de la zone visible. GtkLayoutManager remplace les propriétés enfants des conteneurs GTK, telles que GtkBox et GtkGrid.
- Le traitement des événements a été simplifié, ceux-ci étant désormais utilisés uniquement pour l'entrée. Les autres événements ont été remplacés par des signaux distincts ; par exemple, au lieu des événements de sortie, le signal « GdkSurface::render » est proposé, et pour les événements de configuration, il y a « GdkSurface::size-changed ».
- Un nouveau niveau d'abstraction, GdkPaintable, a été ajouté, représentant des objets pouvant être dessinés n'importe où avec n'importe quelle taille, sans avoir besoin de trier les couches de mise en page.
- Le backend Broadway a été réécrit, permettant de dessiner la sortie de la bibliothèque GTK dans une fenêtre de navigateur web.
- L'API liée à l'exécution des opérations de glisser-déposer a été entièrement refondue, avec des objets GdkDrag et GdkDrop séparés proposés.
Améliorations par rapport à la précédente version de test :
- L'ancienne implémentation de l'API d'accessibilité pour les personnes handicapées a été supprimée, remplacée par une nouvelle version basée sur la spécification et le widget GtkAccessible.
- Ajout du support des étiquettes éditables (GtkEditableLabel).
- Nouveaux modèles de listes proposés pour afficher les signets (GtkBookmarkList), les chaînes (GtkStringList) et les blocs de sélection (GtkBitset).
- La possibilité d'éditer des cellules a été implémentée dans le widget GtkTreeView.
- Dans GtkGridView et GtkListView, la mise en œuvre du défilement a été améliorée, ajoutant la prise en charge de l'autodéfilement et du déploiement automatique.
- Dans GtkWidget, le traitement de diverses actions a été considérablement accéléré.
- Le support du défilement incrémental et de la filtration a été ajouté dans GtkFilterListModel et GtkSortListModel.
- Le volet d'inspection a été enrichi, offrant la possibilité d'inspecter les modèles de listes et de naviguer directement entre les objets.
- Dans GDK, la conservation de l'historique de défilement a été assurée, avec un nettoyage de l'API GdkDevice et la séparation des dispositifs en master et slave abolie.
- Un nouveau backend GDK pour macOS a été ajouté.
- Pour Windows, un nouveau backend GDK de rendu basé sur , pour transmettre les appels OpenGL ES vers OpenGL, Direct3D 9/11, Desktop GL et Vulkan a été proposé.
Source : opennet.ru
