【发布时间】:2015-05-12 13:28:21
【问题描述】:
我已经成功地使用XIconifyWindow 图标化了一个窗口,但没有设法在以后恢复它。我尝试了以下方法:
XMapRaised (display, window);
还有:
XMapWindow (display, window);
还有:
XClientMessageEvent ev;
std::memset (&ev, 0, sizeof ev);
ev.type = ClientMessage;
ev.window = window;
ev.message_type = XInternAtom(display, "WM_CHANGE_STATE", False);
ev.format = 32;
ev.data.l[0] = NormalState;
XSendEvent (display, RootWindow(display, XDefaultScreen(display)), False,
SubstructureRedirectMask |SubstructureNotifyMask, (XEvent*)&ev);
XFlush (display);
没有成功。我正在使用带有 GNOME 3.14.0 的 Debian Jessie。
【问题讨论】:
-
您是否尝试过发送带有
NormalState数据元素的WM_CHANGE_STATE消息? (虽然我会假设XMapRaised会正确取消图标化窗口,但您确定您已刷新呼叫/等待服务器吗?您是否还确保您在正确的顶层窗口上调用了它并且没有离开一个祖先图标化/撤回?) -
不,但现在我已经尝试过了,不幸的是它不起作用。我只有一个窗口,所以显然它是顶级的。我也尝试添加“XFlush”但没有成功。我希望我最终不必使用 WM 特定的代码。
-
你能把你的代码的相关部分贴在这里吗?包括你做过的各种尝试?
-
@Etan:当然,我已经编辑了我的帖子并添加了代码 sn-ps。
-
而您在
display和window的相同值上调用了XIconifyWindow(display, window)?