【问题标题】:Gnome Shell Extension popupmenu within popupmenu弹出菜单中的 Gnome Shell 扩展弹出菜单
【发布时间】:2017-10-19 08:52:34
【问题描述】:

在尝试从另一个弹出菜单打开一个弹出菜单时,我遇到了一个小问题。当我打开子菜单时,两个菜单都会关闭。我正在使用的一个临时解决方案是在单击时关闭原始菜单,然后子菜单保持打开状态。我认为他们都试图抓住焦点并因此而关闭。有谁知道在 gnome shell 扩展中创建分层弹出菜单的合理方法?

【问题讨论】:

    标签: gnome-shell-extensions


    【解决方案1】:

    shell 中的菜单系统在信号和打开和关闭方面有点复杂。如果您还没有,您绝对应该看看popupMenu.js

    如果我回忆起自己的冒险经历,由于信号传播的方式,子菜单中不可能有子菜单,但您可以将这些类中的任何一个子类化并修改信号,或者您可以通过添加操作来伪造自己的子菜单visibility属性:

    还可以查看 PopupMenuSection 类及其评论:

    故意忽略任何打开()或关闭()的尝试,但发出相应的信号,以便孩子们仍然可以捡起它

    【讨论】:

    • 好的,我尝试在我的子类中替换 close 函数,它现在使菜单保持打开状态。但是我仍然对代码有疑问。如何访问或复制原始关闭功能?
    • 您应该能够调用“原型”,它是一种 Javascript“超级”事物。尝试PopupMenu.PopupSubMenu.prototype.close.call(this); 其中 PopupSubMenu 是您子类化的任何类。另一方面,您可能需要these functions 之一。我最终使用了this._getTopMenu().close() 并关闭了整个过程,因为这适用于我的用例。
    猜你喜欢
    • 2011-06-13
    • 1970-01-01
    • 2012-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-07
    • 2016-04-15
    • 2010-11-11
    相关资源
    最近更新 更多