Xlib 隐藏然后显示原始状态的 window

Xlib hide and then show a window in its original state

我注意到如果取消 window 的映射,当我将其映射回来时,它会最大化 状态以及恢复到的大小和位置都丢失了(Ubuntu 10).有没有办法获得正常的 size/pos 这样我就可以把它放回去 映射之前?还是我必须通过调整大小事件自己跟踪它 (如果可能的话)?

谢谢。

当我注意到同样的事情时,这出现在搜索中......所以我不确定我的答案是最好的,但在查看了我的 window 经理的源代码和尽可能多的文档之后我可以(Xlib 手册页、ICCCM、EWMH 规范),但我找不到任何自动完成的东西。在我的实验和我的 window 经理的源代码中,XWithdrawWindow 与 XUnmapWindow 的作用基本相同,这是我最好的选择。

看Qt的源码,调用show()方法的时候也有调整大小的调用。所以至少在某些情况下必须有必要,如果不是全部的话。

Sooo 我认为答案是您需要自己跟踪它。 ConfigureNotify 事件会告诉您何时调整大小并且我相信会感动。您也可以观察其他属性,例如通过事件最大化。如果您跟踪这些,您可以将 window 移回原位。

或者您可以在取消映射之前使用 XGetGeometry(以及其他原子状态)询问大小。