From 8c7ae2b7e949e41eeb04db94e4a63f320b7bb737 Mon Sep 17 00:00:00 2001 From: vapormusic Date: Fri, 28 Jan 2022 17:14:38 +0700 Subject: [PATCH] fix close button inconsistency --- src/main/plugins/minimizeToTray.ts | 22 +++++++++++++++++++--- src/renderer/index.js | 3 ++- src/renderer/views/pages/settings.ejs | 11 +++++++---- 3 files changed, 28 insertions(+), 8 deletions(-) diff --git a/src/main/plugins/minimizeToTray.ts b/src/main/plugins/minimizeToTray.ts index 0bb13492..ec652e1b 100644 --- a/src/main/plugins/minimizeToTray.ts +++ b/src/main/plugins/minimizeToTray.ts @@ -10,6 +10,7 @@ export default class MinimizeToTray { private _app: any; private _store: any; private _tray: any; + private _forceQuit = false; /** * Base Plugin Details (Eventually implemented into a GUI in settings) @@ -46,7 +47,7 @@ export default class MinimizeToTray { { label: 'Quit', click: function () { - self._app.quit(); + self._forceQuit = true; self._app.quit(); } } ])); @@ -70,7 +71,7 @@ export default class MinimizeToTray { { label: 'Quit', click: function () { - self._app.quit(); + self._forceQuit = true; self._app.quit(); } } ])); @@ -122,7 +123,22 @@ export default class MinimizeToTray { // listen for close event this._win.hide(); this.SetContextMenu(false); - }); + }); + electron.ipcMain.handle("update-store-mtt", (event, value) => { + this._store.general["close_behavior"] = value; + }) + this._win.on("close", (e :any) => { + if (this._forceQuit || this._store.general["close_behavior"] == '0' ) { + this._app.exit(); + } else if (this._store.general["close_behavior"] == '1') { + e.preventDefault(); + this._win.minimize(); + } else { + e.preventDefault(); + this._win.hide(); + this.SetContextMenu(false); + } + }); } /** diff --git a/src/renderer/index.js b/src/renderer/index.js index 6186c9dd..0efb969b 100644 --- a/src/renderer/index.js +++ b/src/renderer/index.js @@ -3434,7 +3434,8 @@ const app = new Vue({ switch (app.cfg.general.close_behavior) { case 0: case '0': - ipcRenderer.send('close'); + // the minimizeToTray plugin will handle this + window.close(); break; case 1: case '1': diff --git a/src/renderer/views/pages/settings.ejs b/src/renderer/views/pages/settings.ejs index d5d5c0d8..3e84736c 100644 --- a/src/renderer/views/pages/settings.ejs +++ b/src/renderer/views/pages/settings.ejs @@ -546,10 +546,10 @@ {{$root.getLz("settings.option.experimental.closeButtonBehaviour")}}
- + + +
@@ -695,6 +695,9 @@ }, toggleUserInfo: function () { app.chrome.hideUserInfo = !app.cfg.visual.showuserinfo + }, + sendDataToMTT: function() { + window.ipcRenderer.invoke('update-store-mtt', app.cfg.general.close_behavior); } } })