Может быть, это не совсем то, что вы просили, но вот мысль: почему бы не изменить размер окна, вместо того, чтобы оно «переполнялось» на другие экраны?
Когда вы прогнозируете, что окно будет go выходить за границы текущего отображения, просто уменьшите его размер.
Это может быть сделано с помощью чего-то такого:
const winWidth = 800;
const winHeight = 600;
const SAFETY_MARGINS = 10;
let mainWindow;
// setPosition //////////////////////////////////////////////////////////////////////////
function setPosition(x, y) {
const displayBounds = screen.getPrimaryDisplay().bounds
const fixedX = Math.min(
displayBounds.x + displayBounds.width,
Math.max(x, displayBounds.x)
);
const fixedY = Math.min(
displayBounds.y + displayBounds.height,
Math.max(y, displayBounds.y)
);
mainWindow.setPosition(fixedX, fixedY);
const fixedWidth = Math.max(SAFETY_MARGINS, Math.min(winWidth, displayBounds.width + displayBounds.x - x, winWidth - displayBounds.x + x));
const fixedHeight = Math.max(SAFETY_MARGINS, Math.min(winHeight, displayBounds.height + displayBounds.y - y, winHeight - displayBounds.y + y));
mainWindow.setSize(fixedWidth, fixedHeight);
}
Эта версия setPosition
всегда будет изменять размер вашего окна, чтобы оно выиграло ' t go за пределами экрана.
Вы можете изменить / расширить его, чтобы разрешить окну немного выходить за пределы go и прокручивать содержимое окна (при необходимости).
I Поверьте, что при некоторых настройках для большинства пользователей изменение размера и перемещение окна чуть-чуть за пределы экрана будет более или менее похоже на фактическое перемещение окна за пределы экрана.
Вот демонстрационная программа, перемещающая окно случайным образом с использованием этот код: https://github.com/yoava/so-61092503
(я не тестировал с двумя экранами, так как сейчас я только с моим ноутбуком.)