javascript - 将“点击”信号连接到指标
问题描述
我按照以下教程为 shell 3.36 编写了一个 PanelMenu.Button 派生类:
https://wiki.gnome.org/Projects/GnomeShell/Extensions/Writing
一切正常(在我必须做一些与 3.36 相关的调整之后),但现在我希望单击左键显示/隐藏应用程序并单击右键打开菜单。为此,我想捕捉一个“点击”信号,但 PanelMenu.Button 只发出menu-set
. 我需要这样的东西:
indicator.connect("clicked", () => GLib.spawn_command_line_async("my_app"));
是否有支持“点击”信号的小部件?
解决方案
我认为寻找另一个小部件可能比它的价值更多。如果你看这里的实现,它们实际上只是覆盖了event
vfunc 来打开菜单。
vfunc_event(event) {
if (this.menu &&
(event.type() == Clutter.EventType.TOUCH_BEGIN ||
event.type() == Clutter.EventType.BUTTON_PRESS))
this.menu.toggle();
return Clutter.EVENT_PROPAGATE;
}
如果您已经对自己进行了子类化并且不需要菜单,则只需像这样重新定义虚函数即可简单地做类似的事情(只需将其像常规函数一样放入您的子类中):
vfunc_event() {
if ((event.type() == Clutter.EventType.TOUCH_BEGIN ||
event.type() == Clutter.EventType.BUTTON_PRESS))
GLib.spawn_command_line_async("my_app");
return Clutter.EVENT_PROPAGATE;
}
但是,您可能希望将事件更改为BUTTON_RELEASE
,TOUCH_END
因此当用户释放按钮时会发生这种情况,让他们有机会通过拖动鼠标来改变主意。
推荐阅读
- fifo - FIFO 和 LIFO 指令能否用于 Rockwell PLC 中的同一数据结构?
- c# - 在 API HTTP 调用中使用永久令牌
- javascript - 如何使用活动选项卡菜单名称更新我的反应状态,以便它可以传递给端点调用?
- python - 如何根据条件分解熊猫并添加新的行和列
- android - 错误:找不到模块 'E:\my-project\android\undefined'
- python - 批处理文件错误 (PYTHON) - 原始错误为:导入 _multiarray_umath 时 DLL 加载失败:找不到指定的模块
- qt - 如何在 QML 中使用 MapPolyline 在任意时间后使路径消失?
- python - 如何检查列表中的项目是否在 Python 中的字符串中?
- java - 使用 DSS(CMS 容器)确保 LTV 验证
- python - 如何检测我在电报上的消息是否已使用 Telethon 阅读?