Compare commits
1 commit
main
...
op1/pet-dr
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
be580ba23e |
1 changed files with 22 additions and 6 deletions
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue