fix(electrobun): remove all -webkit-app-region, use JS window drag on AGOR title
This commit is contained in:
parent
fe441a86fe
commit
03e1f18282
6 changed files with 73 additions and 22 deletions
|
|
@ -232246,6 +232246,14 @@ var rpc = BrowserView.defineRPC({
|
|||
return { x: 0, y: 0, width: 1400, height: 900 };
|
||||
}
|
||||
},
|
||||
"window.setPosition": ({ x, y }) => {
|
||||
try {
|
||||
mainWindow.setPosition(x, y);
|
||||
return { ok: true };
|
||||
} catch {
|
||||
return { ok: false };
|
||||
}
|
||||
},
|
||||
"keybindings.getAll": () => {
|
||||
try {
|
||||
return { keybindings: settingsDb.getKeybindings() };
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -4,8 +4,8 @@
|
|||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Svelte App</title>
|
||||
<script type="module" crossorigin src="/assets/index-OTfWrRGk.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="/assets/index-DsPvEluY.css">
|
||||
<script type="module" crossorigin src="/assets/index-DyX_7OUK.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="/assets/index-CYr5v29h.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
|
|
|
|||
|
|
@ -308,6 +308,15 @@ const rpc = BrowserView.defineRPC<PtyRPCSchema>({
|
|||
}
|
||||
},
|
||||
|
||||
"window.setPosition": ({ x, y }: { x: number; y: number }) => {
|
||||
try {
|
||||
mainWindow.setPosition(x, y);
|
||||
return { ok: true };
|
||||
} catch {
|
||||
return { ok: false };
|
||||
}
|
||||
},
|
||||
|
||||
// ── Keybinding handlers ──────────────────────────────────────────────
|
||||
|
||||
"keybindings.getAll": () => {
|
||||
|
|
|
|||
|
|
@ -205,6 +205,39 @@
|
|||
return () => clearInterval(id);
|
||||
});
|
||||
|
||||
// ── JS-based window drag (replaces broken -webkit-app-region on WebKitGTK) ──
|
||||
let isDraggingWindow = false;
|
||||
let dragStartX = 0;
|
||||
let dragStartY = 0;
|
||||
let winStartX = 0;
|
||||
let winStartY = 0;
|
||||
|
||||
function onDragStart(e: MouseEvent) {
|
||||
isDraggingWindow = true;
|
||||
dragStartX = e.screenX;
|
||||
dragStartY = e.screenY;
|
||||
appRpc?.request["window.getFrame"]({}).then((frame: any) => {
|
||||
winStartX = frame.x;
|
||||
winStartY = frame.y;
|
||||
}).catch(() => {});
|
||||
window.addEventListener('mousemove', onDragMove);
|
||||
window.addEventListener('mouseup', onDragEnd);
|
||||
}
|
||||
|
||||
function onDragMove(e: MouseEvent) {
|
||||
if (!isDraggingWindow) return;
|
||||
const dx = e.screenX - dragStartX;
|
||||
const dy = e.screenY - dragStartY;
|
||||
appRpc?.request["window.setPosition"]?.({ x: winStartX + dx, y: winStartY + dy })?.catch?.(() => {});
|
||||
}
|
||||
|
||||
function onDragEnd() {
|
||||
isDraggingWindow = false;
|
||||
window.removeEventListener('mousemove', onDragMove);
|
||||
window.removeEventListener('mouseup', onDragEnd);
|
||||
saveWindowFrame();
|
||||
}
|
||||
|
||||
// ── Window frame persistence (debounced 500ms) ─────────────────
|
||||
let frameSaveTimer: ReturnType<typeof setTimeout> | null = null;
|
||||
function saveWindowFrame() {
|
||||
|
|
@ -275,7 +308,8 @@
|
|||
<!-- Left sidebar icon rail -->
|
||||
<aside class="sidebar" role="navigation" aria-label="Primary navigation">
|
||||
<!-- AGOR vertical title -->
|
||||
<div class="agor-title" aria-hidden="true">AGOR</div>
|
||||
<!-- svelte-ignore a11y_no_static_element_interactions -->
|
||||
<div class="agor-title" aria-hidden="true" onmousedown={onDragStart}>AGOR</div>
|
||||
|
||||
<!-- Group icons — numbered circles -->
|
||||
<div class="sidebar-groups" role="list" aria-label="Project groups">
|
||||
|
|
@ -512,7 +546,7 @@
|
|||
padding: 1rem 0;
|
||||
user-select: none;
|
||||
flex-shrink: 0;
|
||||
-webkit-app-region: drag; /* Only AGOR title is draggable — safe, small area */
|
||||
/* NO -webkit-app-region — broken on WebKitGTK (captures all clicks in window) */
|
||||
cursor: grab;
|
||||
}
|
||||
|
||||
|
|
@ -695,7 +729,7 @@
|
|||
transition: background 0.12s, color 0.12s;
|
||||
padding: 0;
|
||||
font-family: var(--ui-font-family);
|
||||
-webkit-app-region: no-drag;
|
||||
/* no-drag not needed — all -webkit-app-region removed */
|
||||
}
|
||||
|
||||
.wc-btn:hover { background: var(--ctp-surface0); color: var(--ctp-text); }
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue