fix: dark native chrome — no white flash on resize or first paint
Live-resize frame lag: the native window surface resizes before the compositor has a frame at the new size; the gap showed Electron's default WHITE window background — glaring on a dark app, at the edges on shrink. The standard treatment, all three: - BrowserWindow backgroundColor '#141414' fills the lag with the app bg - show: false + ready-to-show — the window appears only after the page has rendered (kills the first-paint white window) - color-scheme: dark — native widgets and scrollbars render dark Owner resize-verified in the Electron dev shell.
This commit is contained in:
@@ -18,6 +18,7 @@
|
|||||||
/* Palette (owner's hexes): main #141414, raised #1C1C1C, edges #434343.
|
/* Palette (owner's hexes): main #141414, raised #1C1C1C, edges #434343.
|
||||||
Mono chrome = JetBrains Mono; prose = Source Sans 3; titles = CMU Serif. */
|
Mono chrome = JetBrains Mono; prose = Source Sans 3; titles = CMU Serif. */
|
||||||
:root {
|
:root {
|
||||||
|
color-scheme: dark;
|
||||||
--radius: 8px;
|
--radius: 8px;
|
||||||
--background: #141414;
|
--background: #141414;
|
||||||
--foreground: #e6e6e6;
|
--foreground: #e6e6e6;
|
||||||
|
|||||||
@@ -200,6 +200,15 @@ function createWindow(url) {
|
|||||||
sandbox: true,
|
sandbox: true,
|
||||||
nodeIntegration: false,
|
nodeIntegration: false,
|
||||||
},
|
},
|
||||||
|
// Live-resize + first-paint flash (owner, 2026-09-17): during a resize
|
||||||
|
// the native window surface changes size before Chromium's compositor
|
||||||
|
// has a frame at the new size, and the gap shows the window's NATIVE
|
||||||
|
// background — Electron's default is white, glaring on a dark app.
|
||||||
|
// The app background (#141414) fills the lag instead. `show: false` +
|
||||||
|
// ready-to-show is the same treatment for first paint: the window
|
||||||
|
// appears only once the page has actually rendered.
|
||||||
|
backgroundColor: "#141414",
|
||||||
|
show: false,
|
||||||
});
|
});
|
||||||
|
|
||||||
const allowedOrigin = () => new URL(url).origin;
|
const allowedOrigin = () => new URL(url).origin;
|
||||||
@@ -226,6 +235,7 @@ function createWindow(url) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
void win.loadURL(url);
|
void win.loadURL(url);
|
||||||
|
win.once("ready-to-show", () => win.show());
|
||||||
return win;
|
return win;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user