检测X11窗口向上/左调整大小

时间:2014-11-23 01:08:57

标签: c x11 xlib

我正在开发一个地图应用程序,我正试图按照我喜欢的方式调整X11的大小。从概念上讲,我希望我的窗口成为我数据所在的一些真实值空间的视口。当您调整窗口大小时,您对此实际值世界的视图大小应相应更改。

这意味着当调整窗口大小时,而不是缩小/拉伸数据,或多或少的底层窗口变得可见。通过在底部/右侧增长/收缩来调整窗口大小时,很容易处理这种情况,但我也想在顶部/左侧调整大小时处理这种情况。

这比较棘手,因为顶部/左侧调整大小也会移动窗口的原点以及它的尺寸。我需要检测原点的变化,以便在窗口调整大小时我可以补偿以保持数据居中。

是否有一种可靠的方法来获取X11中窗口的绝对坐标?由于窗口管理器重新显示,X11直接通过ConfigureNotify和XWinAttributes报告的坐标很狡猾。

1 个答案:

答案 0 :(得分:1)

在Xlib中,使用XTranslateCoordinates将视口窗口中的坐标(0,0)转换为根窗口的坐标。这也包括堆叠窗口管理器弄乱窗口位置的情况。