diff --git a/electron/main.ts b/electron/main.ts index 875afbd..04281ab 100644 --- a/electron/main.ts +++ b/electron/main.ts @@ -5,6 +5,8 @@ import { fileURLToPath } from "node:url"; const __dirname = path.dirname(fileURLToPath(import.meta.url)); +let mainWindow: BrowserWindow | null = null; + async function createWindow() { const win = new BrowserWindow({ width: 1220, @@ -22,6 +24,13 @@ async function createWindow() { } }); + mainWindow = win; + win.on("closed", () => { + if (mainWindow === win) { + mainWindow = null; + } + }); + Menu.setApplicationMenu(null); if (!app.isPackaged) { @@ -48,27 +57,25 @@ ipcMain.handle("envhelper:open-file", async () => { }; }); -ipcMain.handle("envhelper:window-minimize", (event) => { - BrowserWindow.fromWebContents(event.sender)?.minimize(); +ipcMain.on("envhelper:window-minimize", () => { + mainWindow?.minimize(); }); -ipcMain.handle("envhelper:window-toggle-maximize", (event) => { - const win = BrowserWindow.fromWebContents(event.sender); - if (!win) { - return false; +ipcMain.on("envhelper:window-toggle-maximize", () => { + if (!mainWindow) { + return; } - if (win.isMaximized()) { - win.unmaximize(); - return false; + if (mainWindow.isMaximized()) { + mainWindow.unmaximize(); + return; } - win.maximize(); - return true; + mainWindow.maximize(); }); -ipcMain.handle("envhelper:window-close", (event) => { - BrowserWindow.fromWebContents(event.sender)?.close(); +ipcMain.on("envhelper:window-close", () => { + mainWindow?.close(); }); ipcMain.handle("envhelper:save-file", async (_event, content: string) => { diff --git a/electron/preload.ts b/electron/preload.ts index 9b7b055..b0d71e3 100644 --- a/electron/preload.ts +++ b/electron/preload.ts @@ -3,7 +3,7 @@ import { contextBridge, ipcRenderer } from "electron"; contextBridge.exposeInMainWorld("envHelper", { openFile: () => ipcRenderer.invoke("envhelper:open-file"), saveFile: (content: string) => ipcRenderer.invoke("envhelper:save-file", content), - minimizeWindow: () => ipcRenderer.invoke("envhelper:window-minimize"), - toggleMaximizeWindow: () => ipcRenderer.invoke("envhelper:window-toggle-maximize"), - closeWindow: () => ipcRenderer.invoke("envhelper:window-close") + minimizeWindow: () => ipcRenderer.send("envhelper:window-minimize"), + toggleMaximizeWindow: () => ipcRenderer.send("envhelper:window-toggle-maximize"), + closeWindow: () => ipcRenderer.send("envhelper:window-close") }); diff --git a/src/App.tsx b/src/App.tsx index 63931d5..539a0ab 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -338,16 +338,35 @@ export default function App() {
- -