From dda118fbb3bb34d1f7d8b057ff72afa0f1bc0b88 Mon Sep 17 00:00:00 2001 From: MrSphay Date: Fri, 1 May 2026 20:06:02 +0200 Subject: [PATCH] Wire window controls to main window --- electron/main.ts | 33 ++++++++++++++++++++------------- electron/preload.ts | 6 +++--- src/App.tsx | 25 ++++++++++++++++++++++--- src/vite-env.d.ts | 6 +++--- 4 files changed, 48 insertions(+), 22 deletions(-) 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() {
- -