GTK 3.96, version expérimentale de GTK 4, publiée

10 mois après du passé version test soumis GTK 3.96, une nouvelle version expérimentale de la prochaine version stable de GTK 4. La branche GTK 4 est développée dans le cadre d'un nouveau processus de développement qui tente de fournir aux développeurs d'applications une API stable et prise en charge pendant plusieurs années qui peut être utilisée sans crainte. de devoir réécrire l'application tous les six mois en raison d'un changement d'API dans la prochaine branche GTK. Jusqu'à ce que GTK 4 soit complètement stabilisé, il est recommandé que les applications proposées aux utilisateurs continuent à être construites à l'aide de la branche GTK 3.24.

principal changements dans GTK 3.96 :

  • Dans l'API GSK (GTK Scene Kit), qui assure le rendu des scènes graphiques via OpenGL et Vulkan, un travail a été fait sur les erreurs, devenues plus faciles à identifier grâce au nouvel outil de débogage gtk4-node-editor, qui permet de charger et d'afficher le nœud de rendu dans un format sérialisé (peut être enregistré dans l'inspecteur GTK en mode inspection), et compare également les résultats du rendu lors de l'utilisation de différents backends ;

    GTK 3.96, version expérimentale de GTK 4, publiée

  • Les capacités de transformation 3D ont été portées à un niveau qui vous permet de créer des effets d'animation tels qu'un cube rotatif ;

    GTK 3.96, version expérimentale de GTK 4, publiée

  • Complètement réécrit Backend Broadway GDK conçu pour restituer la sortie de la bibliothèque GTK dans une fenêtre de navigateur Web. L'ancienne implémentation de Broadway ne cadrait pas avec les méthodes de rendu proposées dans GTK 4 (au lieu d'une sortie vers un tampon, elle utilise désormais un modèle basé sur des nœuds de rendu, où la sortie est composée sous la forme d'un arbre d'opérations de haut niveau, efficacement traité par le GPU en utilisant OpenGL et Vulkan).
    La nouvelle option Broadway convertit les nœuds de rendu en nœuds DOM avec des styles CSS pour le rendu de l'interface dans le navigateur. Chaque nouvel état d'écran est traité comme un changement dans l'arborescence DOM par rapport à l'état précédent, ce qui réduit la taille des données transmises au client distant. Les transformations 3D et les effets graphiques sont implémentés via la propriété CSS transform ;

  • GDK continue de mettre en œuvre des API conçues avec le protocole Wayland à l'esprit et de nettoyer les API basées sur X11 ou de les déplacer vers un backend X11 distinct. Des progrès ont été réalisés pour abandonner l’utilisation de surfaces enfants et de coordonnées globales. La prise en charge de GDK_SURFACE_SUBSURFACE a été supprimée de GDK ;
  • La refactorisation du code associé à l'exécution des opérations de glisser-déposer s'est poursuivie, y compris les objets distincts GdkDrag et GdkDrop proposés ;
  • La gestion des événements a été simplifiée et est désormais utilisée uniquement pour la saisie. Les événements restants sont remplacés par des signaux séparés, par exemple, au lieu des événements de sortie, le signal « GdkSurface :: render » est proposé, au lieu des événements de configuration - « GdkSurface :: size-changed », au lieu des événements de mappage - « GdkSurface : :mapped”, au lieu de gdk_event_handler_set() - "GdkSurface::event";
  • Le backend GDK pour Wayland a ajouté la prise en charge d'une interface de portail pour accéder aux paramètres GtkSettings. Pour travailler avec les méthodes de saisie, la prise en charge de l'extension de protocole text-input-unstable-v3 a été proposée ;
  • Pour le développement des widgets, un nouvel objet GtkLayoutManager est introduit avec la mise en place d'un système de contrôle de la disposition des éléments en fonction de la disposition de la zone visible. GtkLayoutManager remplace les propriétés enfants dans les conteneurs GTK tels que GtkBox et GtkGrid. Plusieurs gestionnaires de mise en page prêts à l'emploi sont proposés : GtkBinLayout pour les conteneurs simples avec un élément enfant, GtkBoxLayout pour les éléments enfants alignés linéairement, GtkGridLayout pour aligner les éléments enfants sur une grille, GtkFixedLayout pour le positionnement arbitraire des éléments enfants, GtkCustomLayout pour traduire les éléments traditionnels basés sur size_allocate. les gestionnaires ;
  • Des objets accessibles au public pour l'affichage des pages des éléments enfants ont été ajoutés aux widgets GtkAssistant, GtkStack et GtkNotebook, vers lesquels les propriétés enfants non liées à la mise en page de ces widgets sont transférées. Étant donné que toutes les propriétés enfants existantes ont été converties en propriétés normales, en propriétés de mise en page ou déplacées vers des objets de page, la prise en charge des propriétés enfants a été entièrement supprimée de GtkContainer ;
  • La fonctionnalité principale de GtkEntry a été déplacée vers un nouveau widget GtkText, qui comprend également une interface d'édition GtkEditable améliorée. Toutes les sous-classes d'entrée de données existantes ont été recréées en tant qu'implémentations GtkEditable basées sur le nouveau widget GtkText ;
  • Ajout d'un nouveau widget GtkPasswordEntry pour les formulaires de saisie de mot de passe ;
  • GtkWidgets a ajouté la possibilité de transformer des éléments enfants à l'aide de méthodes de transformation linéaire spécifiées via CSS ou l'argument gtk_widget_allocate à GskTransform. La fonctionnalité spécifiée est déjà appliquée dans le widget GtkFixed ;
  • De nouveaux modèles de génération de listes ont été ajoutés : GtkMapListModel, GtkSliceListModel, GtkSortListModel, GtkSelectionModel et GtkSingleSelection. À l'avenir, nous prévoyons d'ajouter la prise en charge des modèles de liste à GtkListView ;
  • GtkBuilder a ajouté la possibilité de définir les propriétés des objets localement (en ligne), au lieu d'utiliser des liens par identifiant ;
  • Ajout d'une commande à gtk4-builder-tool pour convertir les fichiers d'interface utilisateur de GTK 3 en GTK 4 ;
  • La prise en charge des thèmes clés, des menus tabulaires et des zones de liste déroulante a été interrompue. Le widget GtkInvisible a été supprimé.

    Source: opennet.ru

Ajouter un commentaire