Compare commits

...
Sign in to create a new pull request.

1 commit

Author SHA1 Message Date
OpenPets Dev
be580ba23e fix(desktop): OP1 drag threshold so single clicks no longer drag the pet 2026-06-13 22:59:26 +00:00

View file

@ -8,6 +8,7 @@ let scaling = false;
let scaleStartY = 0;
let scaleStartValue = 0.56;
let scalePreviewTimer = null;
const dragThreshold = 4;
const dismissBubble = (event) => {
if (event.button !== 0 || event.ctrlKey || event.metaKey || event.shiftKey || event.altKey) return;
@ -225,6 +226,7 @@ const installPetSenses = () => {
clickTimer = setTimeout(flushClicks, 200);
});
document.addEventListener("mouseover", (event) => {
const target = event.target;
if (!(target instanceof Element) || !target.closest(".pet-hitbox, .pet-shell")) return;
@ -415,10 +417,23 @@ const installMouseInterop = () => {
installPetSenses();
let dragStartPoint = null;
let dragCandidate = null;
document.addEventListener("mousemove", (event) => {
updateInteractiveHit(event);
if (dragging) ipcRenderer.send("openpets:pet-drag-move", { screenX: event.screenX, screenY: event.screenY });
if (dragging) {
ipcRenderer.send("openpets:pet-drag-move", { screenX: event.screenX, screenY: event.screenY });
} else if (dragCandidate) {
const dx = event.screenX - dragCandidate.screenX;
const dy = event.screenY - dragCandidate.screenY;
if (Math.hypot(dx, dy) > dragThreshold) {
dragging = true;
dragStartPoint = { screenX: dragCandidate.screenX, screenY: dragCandidate.screenY };
dragCandidate = null;
setInteractiveHit(true);
ipcRenderer.send("openpets:pet-drag-start", { screenX: event.screenX, screenY: event.screenY });
}
}
if (scaling) {
const newScale = scaleStartValue + (event.clientY - scaleStartY) * 0.003;
const clamped = applyScalePreview(newScale);
@ -444,20 +459,21 @@ const installMouseInterop = () => {
if (event.button !== 0 || !target?.closest(".pet-hitbox, .pet-shell")) return;
event.preventDefault();
dragging = true;
dragStartPoint = { screenX: event.screenX, screenY: event.screenY };
setInteractiveHit(true);
ipcRenderer.send("openpets:pet-drag-start", { screenX: event.screenX, screenY: event.screenY });
dragCandidate = { screenX: event.screenX, screenY: event.screenY };
dragStartPoint = null;
});
document.addEventListener("mouseup", (event) => {
if (dragging) {
dragging = false;
if (dragStartPoint && Math.hypot(event.screenX - dragStartPoint.screenX, event.screenY - dragStartPoint.screenY) > 4) {
if (dragStartPoint && Math.hypot(event.screenX - dragStartPoint.screenX, event.screenY - dragStartPoint.screenY) > dragThreshold) {
suppressClickUntil = Date.now() + 300;
}
dragStartPoint = null;
dragCandidate = null;
ipcRenderer.send("openpets:pet-drag-end");
} else if (dragCandidate) {
dragCandidate = null;
}
if (scaling) {
scaling = false;