From 736ed0e5e8311597d5efb1707eb6fb9f8ed3c315 Mon Sep 17 00:00:00 2001 From: Grzegorz Kucmierz Date: Sun, 8 Feb 2026 17:33:51 +0100 Subject: [PATCH] Mobile: long press stawia X --- src/components/Cell.vue | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) 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(); +};