diff --git a/electron/hudOverlayBounds.test.ts b/electron/hudOverlayBounds.test.ts index dcc4daef..b45c9a56 100644 --- a/electron/hudOverlayBounds.test.ts +++ b/electron/hudOverlayBounds.test.ts @@ -4,6 +4,7 @@ import { getHudOverlayWindowBounds, resizeHudOverlayFallbackBounds, shouldExpandHudOverlayFallback, + shouldResizeHudOverlayFallback, } from "./hudOverlayBounds"; describe("getHudOverlayWindowBounds", () => { @@ -145,6 +146,20 @@ 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); + }); +}); + describe("shouldExpandHudOverlayFallback", () => { it("expands while recording only when the floating webcam preview is visible", () => { expect( diff --git a/electron/hudOverlayBounds.ts b/electron/hudOverlayBounds.ts index 8c51b88c..e56c3e8b 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 shouldExpandHudOverlayFallback({ fallbackExpanded, recordingActive, diff --git a/electron/windows.ts b/electron/windows.ts index ba018862..486f6d82 100644 --- a/electron/windows.ts +++ b/electron/windows.ts @@ -9,6 +9,7 @@ import { getHudOverlayWindowBounds, resizeHudOverlayFallbackBounds, shouldExpandHudOverlayFallback, + shouldResizeHudOverlayFallback, } from "./hudOverlayBounds"; import { getPackagedRendererBaseUrl } from "./rendererServer"; @@ -304,8 +305,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);