From 74593d9953c793a0a99ecf2e96037c99bc78ac7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B5=85=E5=BF=B5?= Date: Wed, 23 Sep 2026 17:09:17 +0800 Subject: [PATCH] =?UTF-8?q?fix(embed):=20scroll=20freeze=20root=20cause=20?= =?UTF-8?q?=E2=80=94=20drag-set=20'manual'=20pause=20reason=20never=20clea?= =?UTF-8?q?red?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit setReason('manual', true) fired on >8px drag had no clear path anywhere (wheel/keyboard have 500ms timers; pointer path didn't) — one drag left the reason permanently, stopping auto-scroll until refresh. Now cleared on pointerup, watchdog, and window blur. Co-Authored-By: Claude Code --- apps/viewer/src/pages/embed/EmbedStream.vue | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/apps/viewer/src/pages/embed/EmbedStream.vue b/apps/viewer/src/pages/embed/EmbedStream.vue index 32f4988..acc9ef0 100644 --- a/apps/viewer/src/pages/embed/EmbedStream.vue +++ b/apps/viewer/src/pages/embed/EmbedStream.vue @@ -236,6 +236,7 @@ function onPointerDown(event: PointerEvent): void { pointerWatchdog = null; pointerDownY = null; setReason('pointer', false); + setReason('manual', false); scheduleResume(); }, POINTER_WATCHDOG_MS); } @@ -259,6 +260,10 @@ function onPointerUp(): void { clearTimeout(pointerWatchdog); pointerWatchdog = null; } + // 拖动置位的 'manual' 原因在此清除(滚动卡死根因修复 2026-09-23:拖动 >8px + // setReason('manual', true) 此前无任何清除路径——一次拖动后暂停原因永久残留, + // 滚动停死到刷新;滚轮/键盘路径各有 500ms 定时清除,拖动漏了)。 + setReason('manual', false); setReason('pointer', false); scheduleResume(); } @@ -367,6 +372,7 @@ function onWindowPointerEnd(): void { function onWindowBlur(): void { pointerDownY = null; setReason('pointer', false); + setReason('manual', false); } onMounted(() => {