fix(hud-overlay): ignore duplicate drag mousemove events to stop hold-drift

This commit is contained in:
TARO-gh
2026-04-03 15:35:29 +09:00
parent 4d29baaae3
commit 302676bb77
2 changed files with 15 additions and 0 deletions
+8
View File
@@ -183,6 +183,7 @@ ipcMain.on("hud-overlay-set-ignore-mouse", (_event, ignore: boolean) => {
});
let hudDragOffset: { x: number; y: number } | null = null;
let hudDragLastCursor: { x: number; y: number } | null = null;
ipcMain.on("hud-overlay-drag", (_event, phase: string, screenX: number, screenY: number) => {
if (!hudOverlayWindow || hudOverlayWindow.isDestroyed()) return;
@@ -190,13 +191,20 @@ ipcMain.on("hud-overlay-drag", (_event, phase: string, screenX: number, screenY:
if (phase === "start") {
const bounds = hudOverlayWindow.getBounds();
hudDragOffset = { x: screenX - bounds.x, y: screenY - bounds.y };
hudDragLastCursor = { x: screenX, y: screenY };
} else if (phase === "move" && hudDragOffset) {
if (hudDragLastCursor && hudDragLastCursor.x === screenX && hudDragLastCursor.y === screenY) {
return;
}
hudDragLastCursor = { x: screenX, y: screenY };
hudOverlayWindow.setPosition(
Math.round(screenX - hudDragOffset.x),
Math.round(screenY - hudDragOffset.y),
);
} else if (phase === "end") {
hudDragOffset = null;
hudDragLastCursor = null;
}
});
+7
View File
@@ -1178,7 +1178,14 @@ export function LaunchWindow() {
e.preventDefault();
isDraggingRef.current = true;
window.electronAPI?.hudOverlayDrag?.("start", e.screenX, e.screenY);
let lastScreenX = e.screenX;
let lastScreenY = e.screenY;
const handleMove = (ev: MouseEvent) => {
if (ev.screenX === lastScreenX && ev.screenY === lastScreenY) {
return;
}
lastScreenX = ev.screenX;
lastScreenY = ev.screenY;
window.electronAPI?.hudOverlayDrag?.("move", ev.screenX, ev.screenY);
};
const handleUp = () => {