繁体   English   中英

X11:如何使窗口一个接一个地移动?

[英]X11: how to make a window move after another?

我有两个顶级窗口,即win1和win2。

我想使win1移动时使win2跟在win1之后,以便win2相对于win1的位置(我称之为relpos )保持恒定。 哎呀,窗户很粘!

我的想法是在win1的ConfigureNotify中移动win2。 为此,我需要了解相关relpos

当移动win2时,我可以在win2的ConfigureNotify中获得(并存储)relpos。

问题在于,在用户移动和以编程方式移动时,win2都会获取ConfigureNotify。 有没有办法区分这两种情况?

如果没有,那么整个方法将失败,因此下一个问题是:还有另一种方法吗?

谢谢。

注意:我不能只设置“ moving_programmatically”标志,移动窗口,然后检查ConfigureNotify上的标志,因为X是异步的(其最大的缺点之一-许多人将此功能视为功能),并且不能保证何时以及有多少ConfigureNotify我得到的事件。 尝试这样做,将win1移得太快,看看win2如何落后。

我认为您必须为此编写一个窗口管理器。 麻烦的原因是,您无法获得“单击win1标题”和“在win1上释放鼠标按钮”事件-窗口管理器会在应用程序看到它们之前将其吞下。 对于这些事件,解决方案很简单:当用户单击win1的标题栏时获取相对偏移,而在win1移动时仅使用此偏移。

其他应用程序(例如LibreOffice)通过允许将这样的窗口拖到主窗口中来解决此问题(主窗口增大,子窗口变成侧面的调色板)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM