From 80d14231c5c9867f011c270861b47345d82c04df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=8B=E3=81=A3=E3=81=93=E3=81=8B=E3=82=8A?= <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Thu, 23 Jul 2026 21:55:20 +0900 Subject: [PATCH] =?UTF-8?q?fix(frontend):=20Lightbox=E4=B8=8A=E3=81=A7?= =?UTF-8?q?=E5=BC=B7=E3=81=8F=E3=82=B9=E3=83=AF=E3=82=A4=E3=83=97=E3=81=97?= =?UTF-8?q?=E3=81=9F=E3=81=A8=E3=81=8D=E3=81=AB=E4=B8=80=E6=99=82=E7=9A=84?= =?UTF-8?q?=E3=81=AB=E7=94=BB=E9=9D=A2=E3=81=8C=E6=93=8D=E4=BD=9C=E4=B8=8D?= =?UTF-8?q?=E8=83=BD=E3=81=AB=E3=81=AA=E3=82=8B=E5=95=8F=E9=A1=8C=E3=82=92?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3=20(#17785)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(frontend): Lightbox上で強くスワイプしたときに一時的に画面が操作不能になる問題を修正 * fix * update comment --- packages/frontend/src/components/MkLightbox.item.vue | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/frontend/src/components/MkLightbox.item.vue b/packages/frontend/src/components/MkLightbox.item.vue index 589e7433f4..91751f16b5 100644 --- a/packages/frontend/src/components/MkLightbox.item.vue +++ b/packages/frontend/src/components/MkLightbox.item.vue @@ -16,7 +16,7 @@ SPDX-License-Identifier: AGPL-3.0-only @pointerup.passive="onPointerup" @pointercancel.passive="cancelPointerGesture" @touchstart.passive="onTouchstart" - @touchmove.passive="onTouchmove" + @touchmove="onTouchmove" @touchcancel.passive="cancelPointerGesture" @contextmenu="cancelPointerGesture" @wheel="onWheel" @@ -721,6 +721,13 @@ function onTouchstart(ev: TouchEvent) { function onTouchmove(ev: TouchEvent) { doubleTapDetector.onTouchmove(ev); + + // スワイプ操作中は、ブラウザがタッチを慣性スクロールとして認識するのを防ぐためにpreventDefaultする必要がある + // touch-action: noneが指定されているが、それだけではブラウザによっては慣性スクロールが発生した扱いになり、 + // その後のタップが慣性スクロールを止めるためのタップという扱いで握りつぶされてしまうことがあるので必要 + if (isVerticalSwiping || isHorizontalSwiping || isZooming.value || pointerEventCache.size > 1) { + ev.preventDefault(); + } } //#region inertia