diff --git a/cinny b/cinny index 0ddf057..fe193bb 160000 --- a/cinny +++ b/cinny @@ -1 +1 @@ -Subproject commit 0ddf05746a67c4de299239bccef217b33ef5925d +Subproject commit fe193bb0622b6f974602fe143406f0bbecbb2ac5 diff --git a/electron/main.js b/electron/main.js index 45717fb..b537409 100644 --- a/electron/main.js +++ b/electron/main.js @@ -333,13 +333,27 @@ function getIconPath(iconName) { function createWindow() { // Restore window state or use defaults - const windowState = store.get('windowState', { - width: 1280, - height: 905, - x: undefined, - y: undefined, - isMaximized: false - }); + const savedState = store.get('windowState', {}); + + // Validate saved position is within visible screen bounds + const { screen } = require('electron'); + let validPosition = false; + if (savedState.x !== undefined && savedState.y !== undefined) { + const displays = screen.getAllDisplays(); + validPosition = displays.some((display) => { + const { x, y, width, height } = display.workArea; + return savedState.x >= x && savedState.x < x + width && + savedState.y >= y && savedState.y < y + height; + }); + } + + const windowState = { + width: savedState.width ?? 1280, + height: savedState.height ?? 905, + x: validPosition ? savedState.x : undefined, + y: validPosition ? savedState.y : undefined, + isMaximized: savedState.isMaximized ?? false, + }; mainWindow = new BrowserWindow({ width: windowState.width,