From 50e0a64519779b3a800f93b937a3d94ec3600738 Mon Sep 17 00:00:00 2001 From: PiEgg Date: Sun, 25 Feb 2024 09:55:41 +0800 Subject: [PATCH] :bug: Fix: tray menu open bug ISSUES CLOSED: #1217 --- .vscode/settings.json | 9 ++-- src/main/apis/app/system/index.ts | 71 ++++++++++++++++++++----------- 2 files changed, 51 insertions(+), 29 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index ec0dcd6..6c86e3c 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -20,7 +20,8 @@ "stylusSupremacy.sortProperties": "grouped", "stylusSupremacy.quoteChar": "\"", "editor.codeActionsOnSave": { - "source.fixAll.eslint": true, - "source.organizeImports": false - } -} \ No newline at end of file + "source.fixAll.eslint": "explicit", + "source.organizeImports": "never" + }, + "prettier.enable": false +} diff --git a/src/main/apis/app/system/index.ts b/src/main/apis/app/system/index.ts index b74cdb0..349bb7d 100644 --- a/src/main/apis/app/system/index.ts +++ b/src/main/apis/app/system/index.ts @@ -137,7 +137,9 @@ export function createContextMenu () { const getTrayIcon = () => { if (process.platform === 'darwin') { const isMacOSGreaterThan11 = isMacOSVersionGreaterThanOrEqualTo('11') - return isMacOSGreaterThan11 ? `${__static}/menubar-newdarwinTemplate.png` : `${__static}/menubar.png` + return isMacOSGreaterThan11 + ? `${__static}/menubar-newdarwinTemplate.png` + : `${__static}/menubar.png` } else { return `${__static}/menubar-nodarwin.png` } @@ -153,7 +155,9 @@ export function createTray () { windowManager.get(IWindowList.TRAY_WINDOW)!.hide() } createContextMenu() - tray!.popUpContextMenu(contextMenu!) + setTimeout(() => { + tray!.popUpContextMenu(contextMenu!) + }, 0) }) tray.on('click', (event, bounds) => { if (process.platform === 'darwin') { @@ -174,7 +178,10 @@ export function createTray () { } else { if (decodePath !== '') { // 带有中文的路径,无法直接被img.src所使用,会被转义 - const base64 = await fs.readFile(decodePath.replace('file://', ''), { encoding: 'base64' }) + const base64 = await fs.readFile( + decodePath.replace('file://', ''), + { encoding: 'base64' } + ) obj.push({ imgUrl: `data:image/png;base64,${base64}` }) @@ -190,7 +197,9 @@ export function createTray () { }) } } - windowManager.get(IWindowList.TRAY_WINDOW)!.webContents.send('clipboardFiles', obj) + windowManager + .get(IWindowList.TRAY_WINDOW)! + .webContents.send('clipboardFiles', obj) }, 0) } else { if (windowManager.has(IWindowList.TRAY_WINDOW)) { @@ -229,7 +238,9 @@ export function createTray () { if (imgs !== false) { const pasteText: string[] = [] for (let i = 0; i < imgs.length; i++) { - pasteText.push(pasteTemplate(pasteStyle, imgs[i], db.get('settings.customLink'))) + pasteText.push( + pasteTemplate(pasteStyle, imgs[i], db.get('settings.customLink')) + ) const notification = new Notification({ title: T('UPLOAD_SUCCEED'), body: imgs[i].imgUrl! @@ -246,8 +257,8 @@ export function createTray () { }) // toggleWindow() } else if (process.platform === 'linux') { - // click事件在Ubuntu上无法触发,Unity不支持(在Mac和Windows上可以触发) - // 需要使用 setContextMenu 设置菜单 + // click事件在Ubuntu上无法触发,Unity不支持(在Mac和Windows上可以触发) + // 需要使用 setContextMenu 设置菜单 createContextMenu() tray!.setContextMenu(contextMenu) } @@ -269,25 +280,35 @@ export function createMenu () { return menu } if (process.env.NODE_ENV !== 'development') { - const template = [{ - label: 'Edit', - submenu: [ - { label: 'Undo', accelerator: 'CmdOrCtrl+Z', selector: 'undo:' }, - { label: 'Redo', accelerator: 'Shift+CmdOrCtrl+Z', selector: 'redo:' }, - { type: 'separator' }, - { label: 'Cut', accelerator: 'CmdOrCtrl+X', selector: 'cut:' }, - { label: 'Copy', accelerator: 'CmdOrCtrl+C', selector: 'copy:' }, - { label: 'Paste', accelerator: 'CmdOrCtrl+V', selector: 'paste:' }, - { label: 'Select All', accelerator: 'CmdOrCtrl+A', selector: 'selectAll:' }, - { - label: 'Quit', - accelerator: 'CmdOrCtrl+Q', - click () { - app.quit() + const template = [ + { + label: 'Edit', + submenu: [ + { label: 'Undo', accelerator: 'CmdOrCtrl+Z', selector: 'undo:' }, + { + label: 'Redo', + accelerator: 'Shift+CmdOrCtrl+Z', + selector: 'redo:' + }, + { type: 'separator' }, + { label: 'Cut', accelerator: 'CmdOrCtrl+X', selector: 'cut:' }, + { label: 'Copy', accelerator: 'CmdOrCtrl+C', selector: 'copy:' }, + { label: 'Paste', accelerator: 'CmdOrCtrl+V', selector: 'paste:' }, + { + label: 'Select All', + accelerator: 'CmdOrCtrl+A', + selector: 'selectAll:' + }, + { + label: 'Quit', + accelerator: 'CmdOrCtrl+Q', + click () { + app.quit() + } } - } - ] - }] + ] + } + ] // @ts-ignore menu = Menu.buildFromTemplate(template) Menu.setApplicationMenu(menu)