c - Xlib 隐藏然后显示原始状态的窗口

标签 c linux xlib xorg xserver

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

谢谢。

最佳答案

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

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

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

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

关于c - Xlib 隐藏然后显示原始状态的窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32008912/

相关文章:

c - OpenMP 中循环的矢量化

linux - 如何使rsync用实际数据替换符号链接(symbolic link)?

linux - 如何从 Linux 设备驱动程序访问 USB 总线号?

c - 如何优雅地退出 X11 事件循环?

linux - 如何使用 XLib 创建映射但不可见的窗口?

c - Sqlite3 使用 C 从用户输入添加新行到表中

c - 如何检测分配内存块的位置?

c - valgrind block 肯定丢失在丢失记录中

c - 如何限制 Xlib 图形基元绘制的表面?

php - RM -rf 仅文件