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.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 }) => {
|
||||
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: {},
|
||||
|
|
|
|||
|
|
@ -144,8 +144,13 @@
|
|||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
}
|
||||
let resizeThrottleId = 0;
|
||||
function onResizeMove(e: MouseEvent) {
|
||||
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 dy = e.screenY - resizeStartY;
|
||||
let { x, y, width, height } = resizeFrame;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue