From 0fe7edc5b5d56a4b25efd32c1ff82190e9553cf0 Mon Sep 17 00:00:00 2001 From: Eugene Pankov Date: Sat, 7 Oct 2017 16:47:37 +0200 Subject: [PATCH] auto reposition window on resolution changes (fixes #150) --- terminus-core/src/services/docking.service.ts | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/terminus-core/src/services/docking.service.ts b/terminus-core/src/services/docking.service.ts index c327cde6..b06a5bc2 100644 --- a/terminus-core/src/services/docking.service.ts +++ b/terminus-core/src/services/docking.service.ts @@ -14,7 +14,10 @@ export class DockingService { private electron: ElectronService, private config: ConfigService, private hostApp: HostAppService, - ) {} + ) { + electron.screen.on('display-removed', () => this.repositionWindow()) + electron.screen.on('display-metrics-changed', () => this.repositionWindow()) + } dock () { let display = this.electron.screen.getAllDisplays() @@ -71,4 +74,20 @@ export class DockingService { } }) } + + getWindow () { + return this.electron.app.window + } + + repositionWindow () { + let [x, y] = this.getWindow().getPosition() + for (let screen of this.electron.screen.getAllDisplays()) { + let bounds = screen.bounds + if (x >= bounds.x && x <= bounds.x + bounds.width && y >= bounds.y && y <= bounds.y + bounds.height) { + return + } + } + let screen = this.electron.screen.getPrimaryDisplay() + this.getWindow().setPosition(screen.bounds.x, screen.bounds.y) + } }