From be2f2f4575c403e4885eb280a383a2e4568cc20c Mon Sep 17 00:00:00 2001 From: Austin Warren Date: Fri, 28 Jun 2019 13:27:41 -0700 Subject: [PATCH] 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 })