【发布时间】:2020-07-20 09:09:33
【问题描述】:
我有一个应用程序以编程方式在用户屏幕周围移动其窗口。我的问题:
- 用户有两个物理监视器
- 用户在主监视器中启动应用程序
- 应用程序移动窗口,导致更多的“溢出”到辅助监视器而不是主监视器上
- 这会导致应用的窗口完全跳转到该辅助监视器并从主监视器中消失。
我希望窗口保留在主监视器中,除非我希望它转到辅助监视器,或者某个定义的点(例如中心)进入辅助监视器,或者如果窗口甚至可以被分割并显示在两者上。有什么办法可以防止在窗口与辅助监视器更多相交时发生这种跳跃?
重申一下,我正在以编程方式移动窗口并在 macOS 上使用 Electron。
另外,当我手动移动窗口时,这似乎不会发生,但我认为这是因为它没有使用它的百分比规则,而是继续鼠标点是否进入辅助监视器。
另外,我愿意接受任何类型的解决方案,包括 C/C++ 或 Swift。
编辑:这是我当前移动窗口的方式:
win.setPosition(x, y);
其中win 是Electron 的BrowserWindow 的一个实例。
所需的行为是将窗口移动到显示器上的任意位置。目前,如果某些窗口超出了当前显示的边缘,它会跳转到另一个显示。这是因为 Apple 的默认行为是自动将窗口移动到与其重叠最多的显示器上,并将其隐藏在所有其他显示器上。值得注意的是,这不是手动拖动窗口时的行为,而是以编程方式移动它时的行为。
【问题讨论】:
-
您能展示如何以编程方式移动窗口的代码吗?我想这将是修复的地方。
-
刚刚添加了代码sn-p。
-
你使用的是什么版本的 Electron?
-
版本为6.0.5
-
> 这是因为 Apple 的默认行为是自动将窗口移动到与其重叠最多的显示器上,并将其隐藏在所有其他显示器上。有谁知道作为用户如何以用户身份禁用此行为?
标签: c++ swift macos electron core-graphics