From 8c007476c3843822c82b54f1b00f898be6c5db31 Mon Sep 17 00:00:00 2001 From: V Date: Thu, 18 Jan 2024 21:13:52 +0100 Subject: [PATCH 1/2] popout: fix titlebar on windows when using native titlebar --- src/main/utils/popout.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/utils/popout.ts b/src/main/utils/popout.ts index 754fdb0..9d1ac08 100644 --- a/src/main/utils/popout.ts +++ b/src/main/utils/popout.ts @@ -5,6 +5,7 @@ */ import { BrowserWindow, BrowserWindowConstructorOptions } from "electron"; +import { Settings } from "main/settings"; import { handleExternalUrl } from "./makeLinksOpenExternally"; @@ -36,7 +37,7 @@ const DEFAULT_POPOUT_OPTIONS: BrowserWindowConstructorOptions = { backgroundColor: "#2f3136", minWidth: MIN_POPOUT_WIDTH, minHeight: MIN_POPOUT_HEIGHT, - frame: process.platform === "linux", + frame: Settings.store.customTitleBar !== true, titleBarStyle: process.platform === "darwin" ? "hidden" : undefined, trafficLightPosition: process.platform === "darwin" From 463cd6dc4613c709ef2ef5af534412374ef8203e Mon Sep 17 00:00:00 2001 From: V Date: Thu, 18 Jan 2024 21:33:17 +0100 Subject: [PATCH 2/2] popout: fix titlebar close button --- src/main/ipc.ts | 9 +++++++-- src/main/utils/popout.ts | 2 +- src/preload/VesktopNative.ts | 2 +- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/main/ipc.ts b/src/main/ipc.ts index e6a42af..dc3dc6b 100644 --- a/src/main/ipc.ts +++ b/src/main/ipc.ts @@ -21,6 +21,7 @@ import { VENCORD_FILES_DIR, VENCORD_QUICKCSS_FILE, VENCORD_THEMES_DIR } from "./ import { mainWin } from "./mainWindow"; import { Settings } from "./settings"; import { handle, handleSync } from "./utils/ipcWrappers"; +import { PopoutWindows } from "./utils/popout"; import { isDeckGameMode, showGamePage } from "./utils/steamOS"; import { isValidVencordInstall } from "./utils/vencordLoader"; @@ -74,8 +75,12 @@ handle(IpcEvents.FOCUS, () => { mainWin.show(); }); -handle(IpcEvents.CLOSE, e => { - (BrowserWindow.fromWebContents(e.sender) ?? e.sender).close(); +handle(IpcEvents.CLOSE, (e, key?: string) => { + const popout = PopoutWindows.get(key!); + if (popout) return popout.close(); + + const win = BrowserWindow.fromWebContents(e.sender) ?? e.sender; + win.close(); }); handle(IpcEvents.MINIMIZE, e => { diff --git a/src/main/utils/popout.ts b/src/main/utils/popout.ts index 9d1ac08..8070449 100644 --- a/src/main/utils/popout.ts +++ b/src/main/utils/popout.ts @@ -52,7 +52,7 @@ const DEFAULT_POPOUT_OPTIONS: BrowserWindowConstructorOptions = { } }; -const PopoutWindows = new Map(); +export const PopoutWindows = new Map(); function focusWindow(window: BrowserWindow) { window.setAlwaysOnTop(true); diff --git a/src/preload/VesktopNative.ts b/src/preload/VesktopNative.ts index d17bd23..a2ca74c 100644 --- a/src/preload/VesktopNative.ts +++ b/src/preload/VesktopNative.ts @@ -52,7 +52,7 @@ export const VesktopNative = { }, win: { focus: () => invoke(IpcEvents.FOCUS), - close: () => invoke(IpcEvents.CLOSE), + close: (key?: string) => invoke(IpcEvents.CLOSE, key), minimize: () => invoke(IpcEvents.MINIMIZE), maximize: () => invoke(IpcEvents.MAXIMIZE) },