1.7 KiB
FAIL
crates/ely-lok/src/view/zoom.rs:51(关联 render.rs:272、view/tests/fit.rs:148)— 连续缩放读取上一帧的居中偏移,导致指针下的页面锚点漂移,违反 R2.7 与 PRD LOK-04。self.spare 仅由 prepare 更新;第一次缩放已经修改 geom.zoom,同帧后续事件仍减去旧偏移。复现:固定 LOK 构建打开现有 FODT,视口 1200×900、100%,指针位于 (600,400),同帧依次缩放到 125%、150%、200%,随后重绘;指针下的文档横坐标从 6404 变成 4500 twips,原锚点画到 x=853.87 px,漂移约 254 px。真实窗口连续派发三个 PinchEvent 同样复现,漂移 250.87 px,截图显示左侧多出约 38 px 灰区。每次缩放后重绘的对照通过;副本中在每次缩放前按当前几何读取 slack() 后,连续事件探针通过,真实窗口误差降至 0.07 px。修复方向:让每次缩放使用与当前缩放、滚动一致的居中偏移,并增加同帧连续滚轮/捏合事件的锚点回归。上一轮的按键左页边与单次指针锚定场景已修复,分别恢复旧错误时现有回归测试均失败;现有测试只覆盖重绘之间的一次指针缩放,遗漏本场景。已独立构建 worker,运行 cargo test -p ely-lok --features view --locked --offline --lib view::tests -- --test-threads=1 --nocapture:34 passed,其中两个剪贴板用例按开关跳过;注释与文件行数检查通过。证据:/tmp/ely-r27-r2-probes.log、/tmp/ely-r27-r2-native.log、/tmp/ely-r27-r2-with-fresh-slack.log、/tmp/ely-r27-r2-pixels.log;复现代码:/tmp/ely-r27-r2-reproducer.log、/tmp/ely-r27-r2-native-reproducer.log。审查副本、独立构建目录及增量缓存已删除,1236 个原有跟踪文件散列一致。