From cd37ffcef2affa65bd5e18884bda07b423a36675 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Tue, 29 Oct 2019 11:37:41 +0000 Subject: [PATCH 1/3] Add ability to hide tray icon on non-Mac (which has no tray icon) --- src/BasePlatform.js | 12 +++++++ .../tabs/user/PreferencesUserSettingsTab.js | 32 ++++++++++++++++--- 2 files changed, 40 insertions(+), 4 deletions(-) diff --git a/src/BasePlatform.js b/src/BasePlatform.js index a97c14bf90..727a9cce93 100644 --- a/src/BasePlatform.js +++ b/src/BasePlatform.js @@ -140,6 +140,18 @@ export default class BasePlatform { throw new Error("Unimplemented"); } + supportsTrayIcon(): boolean { + return false; + } + + async getTrayIconEnabled(): boolean { + return false; + } + + async setTrayIconEnabled(enabled: boolean): void { + throw new Error("Unimplemented"); + } + supportsMinimizeToTray(): boolean { return false; } diff --git a/src/components/views/settings/tabs/user/PreferencesUserSettingsTab.js b/src/components/views/settings/tabs/user/PreferencesUserSettingsTab.js index 5b0b5dbdcf..1b2a4817c8 100644 --- a/src/components/views/settings/tabs/user/PreferencesUserSettingsTab.js +++ b/src/components/views/settings/tabs/user/PreferencesUserSettingsTab.js @@ -69,6 +69,8 @@ export default class PreferencesUserSettingsTab extends React.Component { autoLaunchSupported: false, alwaysShowMenuBar: true, alwaysShowMenuBarSupported: false, + showTrayIcon: false, + showTrayIconSupported: false, minimizeToTray: true, minimizeToTraySupported: false, autocompleteDelay: @@ -85,21 +87,24 @@ export default class PreferencesUserSettingsTab extends React.Component { const autoLaunchSupported = await platform.supportsAutoLaunch(); let autoLaunch = false; - if (autoLaunchSupported) { autoLaunch = await platform.getAutoLaunchEnabled(); } const alwaysShowMenuBarSupported = await platform.supportsAutoHideMenuBar(); let alwaysShowMenuBar = true; - if (alwaysShowMenuBarSupported) { alwaysShowMenuBar = !await platform.getAutoHideMenuBarEnabled(); } + const showTrayIconSupported = await platform.supportsTrayIcon(); + let showTrayIcon = true; + if (showTrayIconSupported) { + showTrayIcon = await platform.getTrayIconEnabled(); + } + const minimizeToTraySupported = await platform.supportsMinimizeToTray(); let minimizeToTray = true; - if (minimizeToTraySupported) { minimizeToTray = await platform.getMinimizeToTrayEnabled(); } @@ -109,6 +114,8 @@ export default class PreferencesUserSettingsTab extends React.Component { autoLaunchSupported, alwaysShowMenuBarSupported, alwaysShowMenuBar, + showTrayIconSupported, + showTrayIcon, minimizeToTraySupported, minimizeToTray, }); @@ -122,6 +129,10 @@ export default class PreferencesUserSettingsTab extends React.Component { PlatformPeg.get().setAutoHideMenuBarEnabled(!checked).then(() => this.setState({alwaysShowMenuBar: checked})); }; + _onShowTrayIconChange = (checked) => { + PlatformPeg.get().setTrayIconEnabled(checked).then(() => this.setState({showTrayIcon: checked})); + }; + _onMinimizeToTrayChange = (checked) => { PlatformPeg.get().setMinimizeToTrayEnabled(checked).then(() => this.setState({minimizeToTray: checked})); }; @@ -163,10 +174,22 @@ export default class PreferencesUserSettingsTab extends React.Component { label={_t('Always show the window menu bar')} />; } + let enableTrayIcon = null; + if (this.state.showTrayIconSupported) { + enableTrayIcon = ; + } + let minimizeToTrayOption = null; if (this.state.minimizeToTraySupported) { + // If tray icon is disabled then this option is not available and forced to off. + // Unless tray icon is not supported (darwin) + const disableOption = this.state.showTrayIconSupported && !this.state.showTrayIcon; minimizeToTrayOption = ; } @@ -186,6 +209,7 @@ export default class PreferencesUserSettingsTab extends React.Component { {_t("Advanced")} {this._renderGroup(PreferencesUserSettingsTab.ADVANCED_SETTINGS)} + {enableTrayIcon} {minimizeToTrayOption} {autoHideMenuOption} {autoLaunchOption} From 646a498b37a2310765dd7a3f94871bb5cf49f29f Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Tue, 29 Oct 2019 11:56:41 +0000 Subject: [PATCH 2/3] i18n --- src/i18n/strings/en_EN.json | 1 + 1 file changed, 1 insertion(+) diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index a5355bd0e3..8a78831b7f 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -640,6 +640,7 @@ "Notifications": "Notifications", "Start automatically after system login": "Start automatically after system login", "Always show the window menu bar": "Always show the window menu bar", + "Show tray icon": "Show tray icon", "Close button should minimize window to tray": "Close button should minimize window to tray", "Preferences": "Preferences", "Composer": "Composer", From fa811f99de7d71d5b7e59a1a2ed7bdd3a2084131 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Wed, 30 Oct 2019 14:32:27 +0000 Subject: [PATCH 3/3] Merge hide-to-tray-icon with show-tray-icon --- src/BasePlatform.js | 12 ------- .../tabs/user/PreferencesUserSettingsTab.js | 31 ++----------------- src/i18n/strings/en_EN.json | 3 +- 3 files changed, 3 insertions(+), 43 deletions(-) diff --git a/src/BasePlatform.js b/src/BasePlatform.js index 727a9cce93..a97c14bf90 100644 --- a/src/BasePlatform.js +++ b/src/BasePlatform.js @@ -140,18 +140,6 @@ export default class BasePlatform { throw new Error("Unimplemented"); } - supportsTrayIcon(): boolean { - return false; - } - - async getTrayIconEnabled(): boolean { - return false; - } - - async setTrayIconEnabled(enabled: boolean): void { - throw new Error("Unimplemented"); - } - supportsMinimizeToTray(): boolean { return false; } diff --git a/src/components/views/settings/tabs/user/PreferencesUserSettingsTab.js b/src/components/views/settings/tabs/user/PreferencesUserSettingsTab.js index 1b2a4817c8..6fc854c155 100644 --- a/src/components/views/settings/tabs/user/PreferencesUserSettingsTab.js +++ b/src/components/views/settings/tabs/user/PreferencesUserSettingsTab.js @@ -69,8 +69,6 @@ export default class PreferencesUserSettingsTab extends React.Component { autoLaunchSupported: false, alwaysShowMenuBar: true, alwaysShowMenuBarSupported: false, - showTrayIcon: false, - showTrayIconSupported: false, minimizeToTray: true, minimizeToTraySupported: false, autocompleteDelay: @@ -97,12 +95,6 @@ export default class PreferencesUserSettingsTab extends React.Component { alwaysShowMenuBar = !await platform.getAutoHideMenuBarEnabled(); } - const showTrayIconSupported = await platform.supportsTrayIcon(); - let showTrayIcon = true; - if (showTrayIconSupported) { - showTrayIcon = await platform.getTrayIconEnabled(); - } - const minimizeToTraySupported = await platform.supportsMinimizeToTray(); let minimizeToTray = true; if (minimizeToTraySupported) { @@ -114,8 +106,6 @@ export default class PreferencesUserSettingsTab extends React.Component { autoLaunchSupported, alwaysShowMenuBarSupported, alwaysShowMenuBar, - showTrayIconSupported, - showTrayIcon, minimizeToTraySupported, minimizeToTray, }); @@ -129,10 +119,6 @@ export default class PreferencesUserSettingsTab extends React.Component { PlatformPeg.get().setAutoHideMenuBarEnabled(!checked).then(() => this.setState({alwaysShowMenuBar: checked})); }; - _onShowTrayIconChange = (checked) => { - PlatformPeg.get().setTrayIconEnabled(checked).then(() => this.setState({showTrayIcon: checked})); - }; - _onMinimizeToTrayChange = (checked) => { PlatformPeg.get().setMinimizeToTrayEnabled(checked).then(() => this.setState({minimizeToTray: checked})); }; @@ -174,24 +160,12 @@ export default class PreferencesUserSettingsTab extends React.Component { label={_t('Always show the window menu bar')} />; } - let enableTrayIcon = null; - if (this.state.showTrayIconSupported) { - enableTrayIcon = ; - } - let minimizeToTrayOption = null; if (this.state.minimizeToTraySupported) { - // If tray icon is disabled then this option is not available and forced to off. - // Unless tray icon is not supported (darwin) - const disableOption = this.state.showTrayIconSupported && !this.state.showTrayIcon; minimizeToTrayOption = ; + label={_t('Show tray icon and minimize window to it on close')} />; } return ( @@ -209,7 +183,6 @@ export default class PreferencesUserSettingsTab extends React.Component { {_t("Advanced")} {this._renderGroup(PreferencesUserSettingsTab.ADVANCED_SETTINGS)} - {enableTrayIcon} {minimizeToTrayOption} {autoHideMenuOption} {autoLaunchOption} diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 8bd563a981..524a8a1abf 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -640,8 +640,7 @@ "Notifications": "Notifications", "Start automatically after system login": "Start automatically after system login", "Always show the window menu bar": "Always show the window menu bar", - "Show tray icon": "Show tray icon", - "Close button should minimize window to tray": "Close button should minimize window to tray", + "Show tray icon and minimize window to it on close": "Show tray icon and minimize window to it on close", "Preferences": "Preferences", "Composer": "Composer", "Timeline": "Timeline",