From 785ca34c3c9411d0830b8aae943aa46e48a69bf8 Mon Sep 17 00:00:00 2001 From: easy <7252487@qq.com> Date: Tue, 21 Jun 2022 16:21:49 +0800 Subject: [PATCH] Fixing macOS tray --- .gitignore | 6 +++++ electron.js | 6 +++-- package.json | 2 ++ src/services/tray.js | 64 +++++++++++++++++++++++--------------------- 4 files changed, 46 insertions(+), 32 deletions(-) diff --git a/.gitignore b/.gitignore index d84c44bf48..5fea1724fd 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,9 @@ cert.crt server-package.json .idea/httpRequests/ data/ +*.log +pnpm-lock.yaml +package.json +.gitignore +.gitignore +package.json diff --git a/electron.js b/electron.js index cc3f866461..d2617d4182 100644 --- a/electron.js +++ b/electron.js @@ -12,9 +12,11 @@ require('electron-debug')(); appIconService.installLocalAppIcon(); require('electron-dl')({ saveAs: true }); - +if (process.platform === 'darwin') { + app.dock.hide() +} app.on('window-all-closed', () => { - if (process.platform !== 'darwin') { + if (process.platform === 'darwin') { app.quit(); } else if (process.platform === 'win32') { diff --git a/package.json b/package.json index 64b1bfbed9..3e9f50ee23 100644 --- a/package.json +++ b/package.json @@ -42,6 +42,7 @@ "electron-debug": "3.2.0", "electron-dl": "3.3.1", "electron-window-state": "5.0.3", + "escape-html": "^1.0.3", "express": "4.18.1", "express-partial-content": "1.0.2", "express-rate-limit": "6.4.0", @@ -82,6 +83,7 @@ "turndown": "7.1.1", "unescape": "1.0.1", "ws": "8.8.0", + "xml2js": "^0.4.23", "yauzl": "2.10.0" }, "devDependencies": { diff --git a/src/services/tray.js b/src/services/tray.js index 7493e5c8b4..aa252dd62d 100644 --- a/src/services/tray.js +++ b/src/services/tray.js @@ -51,43 +51,47 @@ const registerVisibilityListener = () => { } const updateTrayMenu = () => { - const mainWindow = windowService.getMainWindow(); + if (process.platform != 'darwin') { + // Menus under macos cause multiple changeVisibility triggers + const mainWindow = windowService.getMainWindow(); - const contextMenu = Menu.buildFromTemplate([ - { - label: isVisible ? 'Hide' : 'Show', - type: 'normal', - click: () => { - if (isVisible) { - mainWindow.hide(); - } else { - mainWindow.show(); + const contextMenu = Menu.buildFromTemplate([ + { + label: isVisible ? 'Hide' : 'Show', + type: 'normal', + click: () => { + if (isVisible) { + mainWindow.hide(); + } else { + mainWindow.show(); + mainWindow.focus(); + } + } + }, + { + type: 'separator' + }, + { + label: 'Quit', + type: 'normal', + click: () => { + mainWindow.close(); } - } - }, - { - type: 'separator' - }, - { - label: 'Quit', - type: 'normal', - click: () => { - mainWindow.close(); - } - }, - ]); + }, + ]); - tray?.setContextMenu(contextMenu); + tray?.setContextMenu(contextMenu); + } } const changeVisibility = () => { const window = windowService.getMainWindow(); - if (isVisible) { - window.hide(); - } else { - window.show(); - window.focus(); - } + if (isVisible) { + window.hide(); + } else { + window.show(); + window.focus(); + } } function createTray() {