From fa6fa3f1ea1e2495d16efb876969a2ec9e97d85a Mon Sep 17 00:00:00 2001 From: Austin Warren Date: Fri, 28 Jun 2019 12:35:08 -0700 Subject: [PATCH 1/4] Fix default value to fit within dockFill boundaries --- terminus-core/src/configDefaults.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/terminus-core/src/configDefaults.yaml b/terminus-core/src/configDefaults.yaml index 332eee95..71fb6b58 100644 --- a/terminus-core/src/configDefaults.yaml +++ b/terminus-core/src/configDefaults.yaml @@ -1,7 +1,7 @@ appearance: dock: off dockScreen: current - dockFill: 50 + dockFill: 0.5 tabsLocation: top cycleTabs: true theme: Standard From 38494c970467d511a5033e43b5c5b412494a9544 Mon Sep 17 00:00:00 2001 From: Austin Warren Date: Fri, 28 Jun 2019 13:26:17 -0700 Subject: [PATCH 2/4] Properly identify primary display and ensure all screens are sorted by their X/Y bounds --- terminus-core/src/services/docking.service.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/terminus-core/src/services/docking.service.ts b/terminus-core/src/services/docking.service.ts index 20f368db..fd8a28ea 100644 --- a/terminus-core/src/services/docking.service.ts +++ b/terminus-core/src/services/docking.service.ts @@ -63,15 +63,15 @@ export class DockingService { } getScreens () { - return this.electron.screen.getAllDisplays().map((display, index) => { + const primaryDisplayID = this.electron.screen.getPrimaryDisplay().id; + return this.electron.screen.getAllDisplays().sort((a,b) => ( + a.bounds.x === b.bounds.x ? a.bounds.y - b.bounds.y : a.bounds.x - b.bounds.x + )).map((display,index) => { return { id: display.id, - name: [ - 'Primary display', - 'Secondary display', - ][index] || `Display ${index + 1}`, + name: display.id === primaryDisplayID ? 'Primary Display' : `Display ${index +1}`, } - }) + }); } private repositionWindow () { From be2f2f4575c403e4885eb280a383a2e4568cc20c Mon Sep 17 00:00:00 2001 From: Austin Warren Date: Fri, 28 Jun 2019 13:27:41 -0700 Subject: [PATCH 3/4] Ensure our list of screens is up to date when we add/remove/modify screen settings --- .../src/components/settingsTab.component.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/terminus-settings/src/components/settingsTab.component.ts b/terminus-settings/src/components/settingsTab.component.ts index 23ebff1c..454f11b4 100644 --- a/terminus-settings/src/components/settingsTab.component.ts +++ b/terminus-settings/src/components/settingsTab.component.ts @@ -1,7 +1,7 @@ import * as yaml from 'js-yaml' import * as os from 'os' import { Subscription } from 'rxjs' -import { Component, Inject, Input, HostBinding } from '@angular/core' +import { Component, Inject, Input, HostBinding, NgZone } from '@angular/core' import { ElectronService, DockingService, @@ -47,6 +47,7 @@ export class SettingsTabComponent extends BaseTabComponent { public hostApp: HostAppService, public homeBase: HomeBaseService, public shellIntegration: ShellIntegrationService, + public zone: NgZone, hotkeys: HotkeysService, @Inject(SettingsTabProvider) public settingsProviders: SettingsTabProvider[], @Inject(Theme) public themes: Theme[], @@ -68,6 +69,14 @@ export class SettingsTabComponent extends BaseTabComponent { this.configSubscription = config.changed$.subscribe(onConfigChange) onConfigChange() + const onScreenChange = () => { + this.zone.run(() => this.screens = this.docking.getScreens()); + } + + electron.screen.on('display-added', onScreenChange); + electron.screen.on('display-removed', onScreenChange); + electron.screen.on('display-metrics-changed', onScreenChange); + hotkeys.getHotkeyDescriptions().then(descriptions => { this.hotkeyDescriptions = descriptions }) From 0238515b42d751640e917378a42f993f2ed33cfd Mon Sep 17 00:00:00 2001 From: Austin Warren Date: Fri, 28 Jun 2019 13:48:06 -0700 Subject: [PATCH 4/4] Ensure that users with old default config don't end up with an out of bounds window --- terminus-core/src/services/docking.service.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/terminus-core/src/services/docking.service.ts b/terminus-core/src/services/docking.service.ts index fd8a28ea..a4a0289f 100644 --- a/terminus-core/src/services/docking.service.ts +++ b/terminus-core/src/services/docking.service.ts @@ -30,7 +30,8 @@ export class DockingService { } const newBounds: Bounds = { x: 0, y: 0, width: 0, height: 0 } - const fill = this.config.store.appearance.dockFill + + const fill = this.config.store.appearance.dockFill <= 1 ? this.config.store.appearance.dockFill : 1; const [minWidth, minHeight] = this.hostApp.getWindow().getMinimumSize() if (dockSide === 'left' || dockSide === 'right') {