diff --git a/src/components/Cell.vue b/src/components/Cell.vue index 6fbdfca..ced1d25 100644 --- a/src/components/Cell.vue +++ b/src/components/Cell.vue @@ -22,6 +22,15 @@ const cellClass = computed(() => { }); let lastTap = 0; +let longPressTimer = null; +let longPressTriggered = false; + +const clearLongPress = () => { + if (longPressTimer) { + clearTimeout(longPressTimer); + longPressTimer = null; + } +}; const handlePointerDown = (e) => { if (e.pointerType === 'mouse') { @@ -29,6 +38,18 @@ const handlePointerDown = (e) => { if (e.button === 2) emit('start-drag', props.r, props.c, true); return; } + longPressTriggered = false; + clearLongPress(); + longPressTimer = setTimeout(() => { + longPressTriggered = true; + emit('start-drag', props.r, props.c, true); + }, 450); +}; + +const handlePointerUp = (e) => { + if (e.pointerType === 'mouse') return; + clearLongPress(); + if (longPressTriggered) return; const now = Date.now(); const isDoubleTap = now - lastTap < 300; lastTap = now; @@ -38,6 +59,11 @@ const handlePointerDown = (e) => { emit('start-drag', props.r, props.c, false); } }; + +const handlePointerCancel = (e) => { + if (e.pointerType === 'mouse') return; + clearLongPress(); +};