fix(electrobun): use setPosition+setSize instead of setFrame, add resize throttle
This commit is contained in:
parent
cfb7dafa17
commit
48d32f6f28
2 changed files with 12 additions and 1 deletions
|
|
@ -121,7 +121,13 @@ const rpc = BrowserView.defineRPC<PtyRPCSchema>({
|
||||||
"window.getFrame": () => { try { return mainWindow.getFrame(); } catch { return { x: 0, y: 0, width: 1400, height: 900 }; } },
|
"window.getFrame": () => { try { return mainWindow.getFrame(); } catch { return { x: 0, y: 0, width: 1400, height: 900 }; } },
|
||||||
"window.setPosition": ({ x, y }: { x: number; y: number }) => { try { mainWindow.setPosition(x, y); return { ok: true }; } catch { return { ok: false }; } },
|
"window.setPosition": ({ x, y }: { x: number; y: number }) => { try { mainWindow.setPosition(x, y); return { ok: true }; } catch { return { ok: false }; } },
|
||||||
"window.setFrame": ({ x, y, width, height }: { x: number; y: number; width: number; height: number }) => {
|
"window.setFrame": ({ x, y, width, height }: { x: number; y: number; width: number; height: number }) => {
|
||||||
try { mainWindow.setFrame(x, y, width, height); return { ok: true }; } catch (err) { console.error("[window.setFrame]", err); return { ok: false }; }
|
try {
|
||||||
|
// Use separate setPosition + setSize — setFrame's C implementation
|
||||||
|
// may not resize on GTK with titleBarStyle:"hidden"
|
||||||
|
mainWindow.setPosition(x, y);
|
||||||
|
mainWindow.setSize(width, height);
|
||||||
|
return { ok: true };
|
||||||
|
} catch (err) { console.error("[window.setFrame]", err); return { ok: false }; }
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
messages: {},
|
messages: {},
|
||||||
|
|
|
||||||
|
|
@ -144,8 +144,13 @@
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
}
|
}
|
||||||
|
let resizeThrottleId = 0;
|
||||||
function onResizeMove(e: MouseEvent) {
|
function onResizeMove(e: MouseEvent) {
|
||||||
if (!isResizing || !resizeReady) return;
|
if (!isResizing || !resizeReady) return;
|
||||||
|
// Throttle to ~30fps to avoid overwhelming GTK
|
||||||
|
const now = Date.now();
|
||||||
|
if (now - resizeThrottleId < 33) return;
|
||||||
|
resizeThrottleId = now;
|
||||||
const dx = e.screenX - resizeStartX;
|
const dx = e.screenX - resizeStartX;
|
||||||
const dy = e.screenY - resizeStartY;
|
const dy = e.screenY - resizeStartY;
|
||||||
let { x, y, width, height } = resizeFrame;
|
let { x, y, width, height } = resizeFrame;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue