From ed2a1fcc618ad04a286e81db7d4bfc336169ebac Mon Sep 17 00:00:00 2001 From: kangfenmao Date: Tue, 12 Nov 2024 16:36:47 +0800 Subject: [PATCH] feat: remove tray behavior on app close, add platform detection and file extensions --- src/main/constant.ts | 4 ++++ src/main/index.ts | 7 ------- src/main/services/WindowService.ts | 9 +++++++-- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/main/constant.ts b/src/main/constant.ts index 165e54cd80..54bc46614f 100644 --- a/src/main/constant.ts +++ b/src/main/constant.ts @@ -1,3 +1,7 @@ +export const isMac = process.platform === 'darwin' +export const isWin = process.platform === 'win32' +export const isLinux = process.platform === 'linux' + export const imageExts = ['.jpg', '.jpeg', '.png', '.gif', '.bmp', '.webp'] export const videoExts = ['.mp4', '.avi', '.mov', '.wmv', '.flv', '.mkv'] export const audioExts = ['.mp3', '.wav', '.ogg', '.flac', '.aac'] diff --git a/src/main/index.ts b/src/main/index.ts index 7a1e79f51c..1ab36849ba 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -3,7 +3,6 @@ import { app, BrowserWindow } from 'electron' import installExtension, { REDUX_DEVTOOLS } from 'electron-devtools-installer' import { registerIpc } from './ipc' -import { configManager } from './services/ConfigManager' import { registerZoomShortcut } from './services/ShortcutService' import { TrayService } from './services/TrayService' import { windowService } from './services/WindowService' @@ -65,12 +64,6 @@ if (!app.requestSingleInstanceLock()) { app.isQuitting = true }) - app.on('window-all-closed', () => { - if (!configManager.isTray()) { - app.quit() - } - }) - // In this file you can include the rest of your app"s specific main process // code. You can also put them in separate files and require them here. } diff --git a/src/main/services/WindowService.ts b/src/main/services/WindowService.ts index 6df5e494a0..b92ba6ee0d 100644 --- a/src/main/services/WindowService.ts +++ b/src/main/services/WindowService.ts @@ -1,5 +1,5 @@ import { is } from '@electron-toolkit/utils' -import { isTilingWindowManager } from '@main/utils/windowUtil' +import { isLinux, isWin } from '@main/constant' import { app, BrowserWindow, Menu, MenuItem, shell } from 'electron' import windowStateKeeper from 'electron-window-state' import { join } from 'path' @@ -167,9 +167,14 @@ export class WindowService { private setupWindowLifecycleEvents(mainWindow: BrowserWindow) { mainWindow.on('close', (event) => { - if (!configManager.isTray() && isTilingWindowManager()) { + const notInTray = !configManager.isTray() + + // Windows and Linux + if ((isWin || isLinux) && notInTray) { return app.quit() } + + // Mac if (!app.isQuitting) { event.preventDefault() mainWindow.hide()