【问题标题】:Menu enumeration functions in X11?X11 中的菜单枚举功能?
【发布时间】:2014-12-21 06:02:09
【问题描述】:

我正在将此用于屏幕保护程序的测试从 linux 代码转换为 js-ctypes。

它大量使用X11,但我找不到任何菜单功能。

这是我正在尝试转换的代码:

1012     XMenuList::GetInstance()->InsertMenuWindowXIDs(&windows);
1013     // Enumerate the menus first.
1014     for (iter = windows.begin(); iter != windows.end(); iter++) {
1015       if (delegate->ShouldStopIterating(*iter))
1016         return true;
1017     }
1018     windows.clear();

此代码可在此处找到:http://mxr.mozilla.org/chromium/source/src/ui/base/x/x11_util.cc#1012

基本上我试图通过窗口进行枚举,但他们在寻找屏幕保护程序时也会检查菜单。

我偶然发现了这张纸条:

X11 本身不做菜单。这就是创建 GTK、Qt、Motif 等工具包的原因。

http://www.linuxquestions.org/questions/programming-9/x11-menus-how-to-839904/

这是否意味着我应该ctypes.open X11 以外的另一个库,有人知道是哪一个吗?我找不到。

谢谢

这是我正在编写的代码:https://github.com/Noitidart/_scratchpad/blob/master/ScreensaverWindowExists.js#L365

这是我用于 x11 函数的 freedocs 页面:http://www.xfree86.org/4.4.0/manindex3.html

【问题讨论】:

  • 不清楚您指的是哪种菜单。正如您正确引用的注释所说,X11 没有菜单的概念。工具包可以帮助你的程序实现菜单,它不会将菜单引入 X 服务器,也不能帮助你检测其他程序实现的菜单。 “枚举 X11 中的菜单”是什么意思?
  • 好的,如果您查看here,您会发现对于Mozilla,菜单只是一个将_NET_WM_WINDOW_TYPE 属性设置为_NET_WM_WINDOW_TYPE_MENU 的窗口。这是一个“撕下”主应用程序并固定在桌面上的菜单。您不需要任何特殊的库来检测这一点,只需使用普通的属性操作函数即可。我不太明白为什么屏幕保护程序需要它。
  • 谢谢@n.m。 !!其他人,如果您知道为什么 google chrome 会执行“enum menus 1st”上方的代码,请告诉我 :)
  • @n.m.如果不是您,您能否将您的 cmets 移至解决方案,直到现在我都会迷路,即使您不是 jsctypes 人,我也非常感谢您的 cmets。谢谢!!

标签: firefox-addon x11 jsctypes


【解决方案1】:

如果您查看源代码 here,您会发现对于 Mozilla,菜单只是一个将 _NET_WM_WINDOW_TYPE 属性设置为 _NET_WM_WINDOW_TYPE_MENU 的窗口。

桌面标准称此类窗口是“撕下”其主应用程序窗口并固定在桌面上的菜单。您不需要任何特殊的库来检测这一点,只需使用普通的属性操作函数即可。

我不太明白为什么屏幕保护程序需要它。

【讨论】:

    猜你喜欢
    • 2019-11-22
    • 1970-01-01
    • 1970-01-01
    • 2015-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-01
    • 1970-01-01
    相关资源
    最近更新 更多