2017-10-18 11 views
0

別のポップアップメニューからポップアップメニューを開くときに、小さな問題に遭遇しました。サブメニューを開くと、両方のメニューが閉じます。私が使用している一時的な解決策は、クリックすると元のメニューを閉じることで、サブメニューは開いたままです。私は彼らが両方の焦点をつかむしようとしていると思うと、それによって閉じる。誰かがGNOMEシェル拡張で階層的なポップアップメニューを作成する合理的な方法を知っていますか?ポップアップメニュー内のGnomeシェル拡張ポップアップメニュー

答えて

0

シェル内のメニューシステムは、信号と開閉に関して少し畳み込まれています。あなたがまだ持っていない場合は、あなたは間違いなくpopupMenu.jsの外観を持っている必要があります。

自分の冒険を思い出しても、シグナルの伝播の仕方によってサブメニューにサブメニューを入れることはできませんが、これらのクラスをサブクラス化してシグナルを変更することも、自分のサブメヌスを操作することもできますvisibilityプロパティは:

が意図的に(オープンしようとする試みを無視する)、またはclose()、:それはコメントだと

enter image description here

PopupMenuSectionクラスを見て対応する信号を出力するので、子どもはまだそれを受け取ることができます。

+0

私のサブクラスで閉じる関数を置き換えようとしましたが、現在はメニューを開いたままにしています。しかし、私はまだコードに問題があります。元のクローズ機能にアクセスまたは複製するにはどうすればよいですか? – varikas

+0

Javascriptの「super」のようなものである「プロトタイプ」を呼び出せるはずです。 'PopupMenu.PopupSubMenu.prototype.close.call(this);'を試してください。ここで、PopupSubMenuはあなたがサブクラス化したクラスです。一方、[これらの機能](https://github.com/GNOME/gnome-shell/blob/master/js/ui/popupMenu.js#L1134-L1167)のいずれかが必要な場合があります。私は 'this._getTopMenu()。close()'を使用して終了し、すべてを終了させました。なぜなら、これは私のユースケースのために機能したからです。 –

関連する問題