From 626920b9cac39ed5afb02e026d8994d70feb7033 Mon Sep 17 00:00:00 2001
From: kakkokari-gtyih <67428053+kakkokari-gtyih@users.noreply.github.com>
Date: Sat, 11 Jul 2026 20:12:27 +0900
Subject: [PATCH] fix
---
.../src/components/MkImageGallery.item.vue | 32 +++++++++++++++++--
1 file changed, 30 insertions(+), 2 deletions(-)
diff --git a/packages/frontend/src/components/MkImageGallery.item.vue b/packages/frontend/src/components/MkImageGallery.item.vue
index 490e0b1f07..ba99aed408 100644
--- a/packages/frontend/src/components/MkImageGallery.item.vue
+++ b/packages/frontend/src/components/MkImageGallery.item.vue
@@ -31,6 +31,7 @@ SPDX-License-Identifier: AGPL-3.0-only
();
let pointerVec = { x: 0, y: 0 };
+function resolveClickAction(target: EventTarget | null): 'hidden' | 'video' | null {
+ if (!(target instanceof Element)) return null;
+
+ const action = target.closest('[data-gallery-click-action]')?.getAttribute('data-gallery-click-action');
+ if (action === 'hidden' || action === 'video') {
+ return action;
+ }
+
+ return null;
+}
+
function onPointerdown(ev: PointerEvent) {
if (mainEl.value == null) return;
pointerEventCache.set(ev.pointerId, ev);
@@ -422,6 +435,7 @@ function onPointerdown(ev: PointerEvent) {
isDragging = true;
isClick = true;
+ clickAction = resolveClickAction(ev.target);
lastX = ev.clientX;
lastY = ev.clientY;
pointerVec = { x: 0, y: 0 };
@@ -566,6 +580,7 @@ function cancelPointerGesture() {
currentPointerId = null;
isDragging = false;
isClick = false;
+ clickAction = null;
pointerVec = { x: 0, y: 0 };
verticalSwipeDelta = 0;
horizontalSwipeDelta = 0;
@@ -653,9 +668,22 @@ watch(rootEl, (newRootEl) => {
hideForFallback.value = false;
}, { immediate: true });
-function onClick() {
+function onClick(ev: MouseEvent) {
if (!isClick) return;
+ const action = clickAction ?? resolveClickAction(ev.target);
+ clickAction = null;
+
+ if (action === 'hidden') {
+ void onHiddenClick();
+ return;
+ }
+
+ if (action === 'video') {
+ onVideoClick();
+ return;
+ }
+
if (!isTouchUsing) {
if (isZooming.value) {
isZooming.value = false;