fix(hud): avoid horizontal scrollbar when recording on Windows

Use full-size layout and overflow clipping instead of 100vw/100vh on the HUD shell so the fixed 600×160 overlay does not gain a horizontal scrollbar when recording widens the toolbar.

Fixes #305
This commit is contained in:
Amir Yunus
2026-04-05 01:29:46 +08:00
parent 21893f07af
commit 1b980d6264
2 changed files with 22 additions and 1 deletions
+16
View File
@@ -21,6 +21,22 @@ export default function App() {
document.getElementById("root")?.style.setProperty("background", "transparent");
}
// HUD window is a small fixed-size BrowserWindow (`electron/windows.ts`), not a full-screen
// surface. Pin the document shell to that viewport and hide overflow so the renderer cannot
// introduce scrollbars. Without this, `h-full` in `LaunchWindow` has no definite height chain
// from `html`/`body`, and stray overflow can still appear on some hosts (see issue #305).
if (type === "hud-overlay") {
document.documentElement.style.height = "100%";
document.documentElement.style.overflow = "hidden";
document.body.style.height = "100%";
document.body.style.margin = "0";
document.body.style.overflow = "hidden";
const root = document.getElementById("root");
root?.style.setProperty("height", "100%");
root?.style.setProperty("min-height", "0");
root?.style.setProperty("overflow", "hidden");
}
// Load custom fonts on app initialization
loadAllCustomFonts().catch((error) => {
console.error("Failed to load custom fonts:", error);
+6 -1
View File
@@ -241,7 +241,12 @@ export function LaunchWindow() {
};
return (
<div className={`w-screen h-screen bg-transparent ${styles.electronDrag}`}>
// Root fills the HUD window only. Avoid `w-screen`/`h-screen` (`100vw`/`100vh`): `100vw` can
// exceed the inner layout width when scrollbars affect the viewport (notably on Windows), which
// showed up as a horizontal scrollbar once recording widened the toolbar (issue #305).
<div
className={`h-full w-full min-w-0 max-w-full overflow-x-hidden overflow-y-hidden bg-transparent ${styles.electronDrag}`}
>
{/* Language switcher — top-left, beside traffic lights */}
<div
className={`fixed top-2 flex items-center gap-1 px-2 py-1 rounded-md text-white/50 hover:text-white/90 hover:bg-white/10 transition-all duration-150 ${isMac ? "left-[72px]" : "left-2"} ${styles.electronNoDrag}`}