From 47efe42d3cf105b1a8a88d937158b68d5eeb1ffe Mon Sep 17 00:00:00 2001 From: zhanghongyuan Date: Wed, 9 Sep 2026 15:56:29 +0800 Subject: [PATCH] fix(reader): keep restore-tip notify flag on tab switch during startup restore MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When reopening with multiple documents, deferred restore guards of background tabs had their notify flag overwritten by restoreSavedViewState() calling beginRestoreGuard(false), so the "restored to last reading position" tip never showed for those tabs. 启动期多文档恢复时,后台页签的恢复守卫被顺延;首次切到该页签时 restoreSavedViewState() 用 beginRestoreGuard(false) 覆盖了待弹条的 通知标志,导致恢复完成后提示条永不出现。 Log: 多文档恢复时保留顺延守卫的弹条通知标志,修复仅首个文档有恢复提示条的问题 PMS: BUG-376441 Influence: 恢复会话中每个有阅读进度的标签页首次切换过去时都会弹出恢复提示条;恢复已完成的页签回切行为不变。 --- reader/uiframe/DocSheet.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/reader/uiframe/DocSheet.cpp b/reader/uiframe/DocSheet.cpp index 0b332534f..c0e7b69b8 100644 --- a/reader/uiframe/DocSheet.cpp +++ b/reader/uiframe/DocSheet.cpp @@ -1892,7 +1892,11 @@ void DocSheet::restoreSavedViewState() // 恢复滚动位置(守卫期间若因侧栏宽度恢复等再触发 deform,最终恢复推迟到布局稳定后) // 标签页回切不弹恢复提示条,显隐由 sigCurSheetChanged 按 needsRestoreTip 同步 if (m_browser && m_operation.scrollPosition > 0.0f) { - beginRestoreGuard(false); + if (m_restoreGuardActive) { + m_restoreSettleTimer->start(kRestoreSettleMs); + } else { + beginRestoreGuard(false); + } } }