From e2802bffad587f75049883e6b1565487e072a1e0 Mon Sep 17 00:00:00 2001 From: wiiiii123 Date: Fri, 29 May 2026 00:32:07 +0700 Subject: [PATCH] fix(linux): expand HUD fallback for menus --- electron/hudOverlayBounds.test.ts | 15 +++++++++++++++ electron/hudOverlayBounds.ts | 7 +++++++ electron/windows.ts | 11 ++++++++--- 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/electron/hudOverlayBounds.test.ts b/electron/hudOverlayBounds.test.ts index dac1058c..a98b79f3 100644 --- a/electron/hudOverlayBounds.test.ts +++ b/electron/hudOverlayBounds.test.ts @@ -3,6 +3,7 @@ import { describe, expect, it } from "vitest"; import { getHudOverlayWindowBounds, resizeHudOverlayFallbackBounds, + shouldResizeHudOverlayFallback, } from "./hudOverlayBounds"; describe("getHudOverlayWindowBounds", () => { @@ -143,3 +144,17 @@ describe("resizeHudOverlayFallbackBounds", () => { }); }); }); + +describe("shouldResizeHudOverlayFallback", () => { + it("allows non-passthrough HUD windows to expand for menus when idle", () => { + expect(shouldResizeHudOverlayFallback(false, false)).toBe(true); + }); + + it("does not resize full passthrough HUD windows", () => { + expect(shouldResizeHudOverlayFallback(true, false)).toBe(false); + }); + + it("keeps the recording HUD compact in non-passthrough mode", () => { + expect(shouldResizeHudOverlayFallback(false, true)).toBe(false); + }); +}); diff --git a/electron/hudOverlayBounds.ts b/electron/hudOverlayBounds.ts index b8800e30..74205dbe 100644 --- a/electron/hudOverlayBounds.ts +++ b/electron/hudOverlayBounds.ts @@ -38,6 +38,13 @@ export function getHudOverlayWindowBounds( }; } +export function shouldResizeHudOverlayFallback( + mousePassthroughSupported: boolean, + recordingActive: boolean, +): boolean { + return !mousePassthroughSupported && !recordingActive; +} + export function resizeHudOverlayFallbackBounds( workArea: HudOverlayWorkArea, currentBounds: HudOverlayWorkArea, diff --git a/electron/windows.ts b/electron/windows.ts index 982fa677..cd17bb84 100644 --- a/electron/windows.ts +++ b/electron/windows.ts @@ -5,7 +5,11 @@ import path from "node:path"; import { fileURLToPath } from "node:url"; import { app, BrowserWindow, ipcMain } from "electron"; import { USER_DATA_PATH } from "./appPaths"; -import { getHudOverlayWindowBounds, resizeHudOverlayFallbackBounds } from "./hudOverlayBounds"; +import { + getHudOverlayWindowBounds, + resizeHudOverlayFallbackBounds, + shouldResizeHudOverlayFallback, +} from "./hudOverlayBounds"; import { getPackagedRendererBaseUrl } from "./rendererServer"; const electronWindowsDir = path.dirname(fileURLToPath(import.meta.url)); @@ -294,8 +298,9 @@ function setHudOverlayMousePassthrough(ignore: boolean) { return; } - if (!isHudOverlayMousePassthroughSupported()) { - if (process.platform !== "linux") { + const mousePassthroughSupported = isHudOverlayMousePassthroughSupported(); + if (!mousePassthroughSupported) { + if (shouldResizeHudOverlayFallback(mousePassthroughSupported, hudOverlayRecordingActive)) { setHudOverlayFallbackExpanded(!ignore); } hudOverlayWindow.setIgnoreMouseEvents(false);