【发布时间】:2012-01-22 07:10:13
【问题描述】:
我可以让我的应用全屏显示,但我无法让它回到具有边框可见的窗口模式。我试图调用 XDeleteProperty 来清除全屏设置,但它似乎不起作用。
【问题讨论】:
-
你到底是怎么做到全屏的?请注意,全屏不在 Xlib 的范围内,您可能正在使用 NETWM/EWMH 或一些 hack。
我可以让我的应用全屏显示,但我无法让它回到具有边框可见的窗口模式。我试图调用 XDeleteProperty 来清除全屏设置,但它似乎不起作用。
【问题讨论】:
如果您使用 _NET_WM_STATE http://standards.freedesktop.org/wm-spec/latest/ar01s05.html#id2569140 则在映射窗口之前设置属性,但在映射窗口之后您必须发送客户端消息并且窗口管理器更新属性。阅读 EWMH 的开头部分“要更改映射窗口的状态,客户端必须向根窗口发送 _NET_WM_STATE 客户端消息...”
这是因为一旦您映射了窗口管理器负责维护其状态的窗口,如果应用程序和 WM 都可以直接修改该属性,则会出现竞争。
查看工具包的源代码,例如 GTK+ 示例代码。
【讨论】: