X11 中的菜单枚举函数



我正在将这个测试的屏幕保护程序的东西从 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

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

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

桌面

标准说,这样的窗口是"撕下"其主应用程序窗口并固定到桌面的菜单。您不需要任何特殊的库来检测这一点,只需使用正常的属性操作函数即可。

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

最新更新