[英]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.