如何防止我的应用程序的窗口转到另一台监视器(Electron + macOS)

问题描述 投票:2回答:2

enter image description here

我有一个应用程序,可以以编程方式在用户屏幕上移动其窗口。我的问题:

  1. 用户有两个物理监视器
  2. 用户在主监视器中启动应用程序
  3. 应用程序移动窗口,使其比主监视器上的更多地“溢出”到辅助监视器中>
  4. 这会使应用程序的窗口完全跳到该辅助监视器,并从主监视器中消失。
  5. 我希望窗口保留在主监视器中,除非我希望它进入辅助监视器,或者某个定义的点(例如中心)进入辅助监视器,或者如果窗口位于拆分并显示在两者上。窗口与辅助监视器的交集越多,是否有任何方法可以防止此跳转发生?

重申一下,我正在以编程方式移动窗口,并在macOS上使用Electron。

此外,当我手动移动窗口时,这似乎没有发生,但是我认为这是因为它没有使用其百分比规则,而是继续研究鼠标的点是否已进入辅助监视器。

此外,我愿意接受任何一种解决方案,包括C / C ++或Swift。

编辑:这是我当前正在移动窗口的方式:

win.setPosition(x, y);

其中win是电子的BrowserWindow的实例。

所需的行为是将窗口移动到显示器上的任何位置。当前,如果某些窗口偏离当前显示的边缘足够多,它将跳到另一个显示。这是因为Apple的默认行为是自动将窗口移至与其最重叠的显示器,并将其隐藏在所有其他显示器上。值得注意的是,这是not

手动拖动窗口时的行为,而只是以编程方式移动它时的行为。

我有一个应用程序,可以以编程方式在用户屏幕上移动其窗口。我的问题:用户有两个物理监视器用户在主监视器中启动应用程序应用程序移动窗口,导致更多的出现在“ ...

c++ swift macos electron core-graphics
2个回答
0
投票

我不知道您如何移动此窗口,或者您不希望窗口在碰到边缘时如何运行,但我会尽力为您提供一些解决方案。


0
投票

由于Mac OS的行为,当您执行win.setPosition(x, y);时不起作用。(即使使用相同的电子版本6.0.5,我也尝试了电子快速入门项目https://github.com/electron/electron-quick-start

© www.soinside.com 2019 - 2024. All rights reserved.