From 6bf586e92864c20e9e10881838d8fb72cc410b15 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 24 Apr 2026 08:01:39 +0000 Subject: [PATCH] fix(tasks): disable task glance tooltip on touch devices Mouse event emulation from taps on touch devices caused the glance tooltip to appear unexpectedly with no reliable way to dismiss it. Gate the tooltip behind a `(hover: hover) and (pointer: fine)` media query so it only activates on devices with a real pointer. --- .../components/tasks/partials/TaskGlanceTooltip.vue | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/frontend/src/components/tasks/partials/TaskGlanceTooltip.vue b/frontend/src/components/tasks/partials/TaskGlanceTooltip.vue index bff5a1fb7..bf0721b12 100644 --- a/frontend/src/components/tasks/partials/TaskGlanceTooltip.vue +++ b/frontend/src/components/tasks/partials/TaskGlanceTooltip.vue @@ -8,7 +8,10 @@ - +
import {ref, computed, onUnmounted, nextTick} from 'vue' import {computePosition, flip, offset, shift} from '@floating-ui/dom' +import {useMediaQuery} from '@vueuse/core' import type {ITask} from '@/modelTypes/ITask' import {getTaskIdentifier} from '@/models/task' @@ -101,6 +105,9 @@ const props = defineProps<{ const HOVER_DELAY = 1000 // 1 second const MAX_DESCRIPTION_LENGTH = 150 +// Taps on touch devices emulate mouseenter, which would show the tooltip unexpectedly. +const canHover = useMediaQuery('(hover: hover) and (pointer: fine)') + const triggerRef = ref(null) const tooltipRef = ref(null) const showTooltip = ref(false) @@ -152,6 +159,10 @@ async function updatePosition() { } function handleMouseEnter() { + if (!canHover.value) { + return + } + // Clear any existing timeout if (hoverTimeout) { clearTimeout(hoverTimeout)