2017-10-18 6 views
0

다른 팝업 메뉴에서 팝업 메뉴를 열려고 시도하는 중에 작은 문제가 발생했습니다. 하위 메뉴를 열면 두 메뉴가 모두 닫힙니다. 임시 해결책은 클릭 할 때 원본 메뉴를 닫고 하위 메뉴를 열어 두는 것입니다. 나는 그들이 모두 초점을 잡으려고 노력하고 있으며 그로 인해 닫을 것 같아요. 누구나 GNOME 쉘 확장에서 계층 적 팝업 메뉴를 만드는 합리적인 방법을 알고 있습니까?팝업 메뉴 내의 Gnome 셸 확장 팝업 메뉴

답변

0

셸의 메뉴 시스템은 신호 및 개폐와 관련하여 조금 복잡합니다. 아직 popupMenu.js이 아닌 경우 분명히 봐야합니다.

내 모험에서 회상 한 경우 신호가 전파되는 방식 때문에 하위 메뉴에 하위 메뉴를 포함 할 수는 없지만 이러한 하위 메뉴 중 하나를 하위 클래스로 지정하고 신호를 수정할 수도 있고 조작 메뉴를 추가하여 자신의 하위 메뉴를 가짜로 만들 수도 있습니다 visibility 속성 :

의도적으로 (열 시도를 무시) 또는 가까운() :이 주석의와

enter image description here

또한 PopupMenuSection 클래스에서 봐 그러나 해당 신호를 내고 아이들이 여전히 그것을 집을 수 있도록

+0

좋아, 내 서브 클래스의 닫기 기능을 대체하려고했는데 지금 메뉴를 열어 둔다. 그러나 나는 여전히 코드에 문제가있다. 원래 닫기 기능에 액세스하거나 복제하려면 어떻게합니까? – varikas

+0

Javascript "super"와 같은 일종의 "prototype"을 호출 할 수 있어야합니다. 'PopupMenu.PopupSubMenu.prototype.close.call (this);'PopupSubMenu는 당신이 서브 클래 싱 한 클래스이다. 다른 한편으로는 [이 기능들] (https://github.com/GNOME/gnome-shell/blob/master/js/ui/popupMenu.js#L1134-L1167) 중 하나를 원할 수 있습니다. 'this._getTopMenu(). close()'를 사용하고 결국 모든 것을 닫았습니다. 내 유스 케이스에서 작동했기 때문입니다. –