一个窗口应该始终保持在所有其他窗口的顶部。在纯x11 / xlib中是否可能实现这一点?搜索“Always on top”和“x11” / “xlib”没有返回有用的结果。
如果可能的话,我会避免使用GTK +等工具包。
我正在使用带有gnome桌面的Ubuntu。在窗口菜单中,有一个“始终置顶”的选项。这是由X服务器还是窗口管理器提供的?如果是后者,是否有一个通用函数可以为几乎任何wm调用?或者如何以“X11通用”方式完成此操作?
编辑:我实现了fizzer的答案,现在有以下代码:
如果可能的话,我会避免使用GTK +等工具包。
我正在使用带有gnome桌面的Ubuntu。在窗口菜单中,有一个“始终置顶”的选项。这是由X服务器还是窗口管理器提供的?如果是后者,是否有一个通用函数可以为几乎任何wm调用?或者如何以“X11通用”方式完成此操作?
编辑:我实现了fizzer的答案,现在有以下代码:
XSelectInput(this->display, this->window,
ButtonPressMask |
StructureNotifyMask |
ExposureMask |
KeyPressMask |
PropertyChangeMask |
VisibilityChangeMask );
// ...
// In a loop:
if (XPending(this->display) >= 0)
{
XNextEvent(this->display, &ev);
switch(ev.type) {
// ...
case VisibilityNotify:
XRaiseWindow(this->display, this->window);
XFlush(this->display);
break;
// ...
}
}
但是,即使我的掩码正确,事件处理和触发也几乎从未执行过?!