我注意到,如果我取消映射一个窗口,当我将它映射回去时,它会最大化 状态以及恢复到的大小和位置都丢失了(Ubuntu 10).有没有办法获得正常尺寸/位置,以便我可以把它放回去 映射之前?还是我必须通过调整大小事件自己跟踪它 (如果可能的话)?
谢谢。
最佳答案
当我注意到同样的事情时,这出现在搜索中......所以我不确定我的答案是最好的,但在查看了我的窗口管理器的源代码和尽可能多的文档之后(Xlib 手册页,ICCCM,EWMH 规范),我找不到任何自动完成的东西。在我的实验和窗口管理器的源代码中,XWithdrawWindow 基本上与 XUnmapWindow 做同样的事情,这是我最好的选择。
看Qt的源码,调用show()方法的时候也有调整大小的调用。因此,至少在某些情况下(如果不是全部)必须有必要。
Sooo 我认为答案是您需要自己跟踪它。 ConfigureNotify
事件将在您调整大小并且我相信移动时告诉您。您也可以观察其他属性,例如通过事件最大化。如果您跟踪这些,您可以将窗口移回。
或者您可以在执行取消映射之前使用 XGetGeometry(以及其他原子状态)请求大小。
关于c - Xlib 隐藏然后显示原始状态的窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32008912/