En essayant d'ouvrir un menu contextuel à partir d'un autre menu contextuel, j'ai rencontré un petit problème. Les deux menus se ferment lorsque j'ouvre le sous-menu. Une solution temporaire que j'utilise est de fermer le menu original sur le clic et le sous-menu reste ouvert alors. Je pense qu'ils essayent tous les deux d'attirer l'attention et de fermer à cause de cela. Est-ce que quelqu'un sait un moyen raisonnable de créer des popupmenus hiérarchiques dans les extensions shell gnome?Menu contextuel Gnome Shell Extension dans le menu contextuel
0
A
Répondre
0
Le système de menu dans la coque est un peu compliqué en ce qui concerne les signaux et l'ouverture et la fermeture. Vous devriez absolument jeter un coup d'oeil à popupMenu.js si vous ne l'avez pas déjà fait. Si je me souviens de mes propres aventures, il n'est pas possible d'avoir des sous-menus à cause de la propagation des signaux, mais vous pouvez sous-classer ces classes et modifier les signaux, ou vous pouvez fausser vos propres sous-menus en ajoutant la visibility
propriété:
ont également un oeil à PopupMenuSection classe avec ses commentaires:
délibérément ignorer toute tentative d'ouverture() ou close(), mais j'émets le signal correspondant pour que les enfants puissent tout de même le saisir
Ok, j'ai essayé de remplacer la fonction de fermeture dans ma sous-classe et cela maintient le menu ouvert maintenant. Cependant, j'ai toujours un problème avec le code. Comment accéder ou répliquer la fonction de fermeture d'origine? – varikas
Vous devriez pouvoir appeler le "prototype" qui est en quelque sorte un "super" Javascript. Essayez 'PopupMenu.PopupSubMenu.prototype.close.call (this);' où PopupSubMenu est la classe que vous avez sous-classée. D'un autre côté, vous pourriez vouloir l'une de [ces fonctions] (https://github.com/GNOME/gnome-shell/blob/master/js/ui/popupMenu.js#L1134-L1167). J'ai fini par utiliser 'this._getTopMenu(). Close()' et en fermant le tout, parce que cela a fonctionné pour mon use-case. –