X11中的菜单枚举功能?

时间:2014-12-21 06:02:10

标签: firefox-addon x11 jsctypes

我正在将此测试转换为从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

1 个答案:

答案 0 :(得分:2)

如果查看来源here,您会发现Mozilla的菜单只是_NET_WM_WINDOW_TYPE属性设置为_NET_WM_WINDOW_TYPE_MENU的窗口。

桌面标准称这些窗口是“撕掉”的菜单。他们的主要应用程序窗口并固定到桌面。您不需要任何特殊的库来检测它,只需使用普通的属性操作函数。

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