diff --git a/apps/ely-doc/src/chrome.rs b/apps/ely-doc/src/chrome.rs index c849bf6..60c756f 100644 --- a/apps/ely-doc/src/chrome.rs +++ b/apps/ely-doc/src/chrome.rs @@ -80,7 +80,8 @@ impl Docs { let shown = self .active_tab() .map(|tab| (tab.view.clone(), tab.doc.clone())); - let tab = shown.as_ref().map(|(view, doc)| (view, doc)); + // Hidden, it follows nothing: no reads on every move. + let tab = shown.as_ref().filter(|_| self.navigating).map(|(view, doc)| (view, doc)); self.navigator .update(cx, |navigator, cx| navigator.show(tab, cx)); shown.filter(|_| self.navigating)?; diff --git a/apps/ely-doc/src/navigate/tests.rs b/apps/ely-doc/src/navigate/tests.rs index 46bda18..ff19cdc 100644 --- a/apps/ely-doc/src/navigate/tests.rs +++ b/apps/ely-doc/src/navigate/tests.rs @@ -253,6 +253,30 @@ fn pdfs_export_a_range_and_locked_files_ask() { ); } +#[test] +fn a_hidden_navigator_reads_nothing() { + let dir = tempfile::tempdir().expect("a temp dir"); + let mut cx = TestAppContext::single(); + let Some(docs) = docs(&mut cx, dir.path()) else { + eprintln!("SKIP: no LOK build"); + return; + }; + crate::tests::blank(&mut cx, &docs); + let follows = |cx: &mut TestAppContext| cx.update(|app| docs.read(app).navigator.read(app).shown.is_some()); + cx.update(|app| docs.update(app, |docs, cx| docs.left_view(cx))); + assert!(follows(&mut cx), "shown: it follows the tab"); + cx.update(|app| docs.update(app, |docs, cx| { + docs.navigating = false; + docs.left_view(cx) + })); + assert!(!follows(&mut cx), "hidden: no tab to reread"); + cx.update(|app| docs.update(app, |docs, cx| { + docs.navigating = true; + docs.left_view(cx) + })); + assert!(follows(&mut cx), "shown again: it reads once more"); +} + /// The navigator alone as a window's view. struct Host(Entity); diff --git a/tasks/BUGS.md b/tasks/BUGS.md index f722728..98326d4 100644 --- a/tasks/BUGS.md +++ b/tasks/BUGS.md @@ -53,7 +53,7 @@ - [x] D-04 一条批注的时间读不出,全部批注与修订都不显示 — 逐条解析,读不出的批注写明作者与原因(AX 可读、可滚动),修订照留 - [x] D-05 邮件合并某条记录失败时内核文档泄漏 — 失败的记录照样关闭内核文档,再传出首个错误 - [x] D-06 导航栏大纲点击按当前列表取下标,后台重读后可能越界 — 点击按绘制时的列表跳转;补点击路径的回归测试 -- [ ] D-07 导航栏隐藏时仍随每次光标移动重读大纲与书签 +- [x] D-07 导航栏隐藏时仍随每次光标移动重读大纲与书签 — 隐藏时不跟随标签、不读;再显示时读一次 - [ ] D-08 Linux、Windows 上“打印…”可用,导出 PDF 后才报“此平台未构建” - [x] M-01 键入期间外部以相同内容重写文件,丢掉上次停顿之后键入的全部文字 — 先等页面送出未送的键;同文只接过文件与字节、标签为已保存;磁盘回到上次保存的文字时保留编辑并恢复自动保存;R1–R4 字节、自动保存、在途写入、已保存基线;R5 PASS - [ ] M-02 `refresh` 归零版本计数却不换代,在途的一键让标签一直“未落定”