1.5 KiB
FAIL
crates/ely-lok/src/view/zoom.rs:51(同文件 :59;crates/ely-lok/src/view/tests/fit.rs:113)— 缩放仍按视口坐标计算锚点,遗漏页面居中偏移 spare,并允许横向滚动越过页面左边界,违反 R2.7 的页面锚定与左页边可见要求。复现:用固定 LOK 构建打开现有 FODT 样本,prepare 为 1200×900,初始缩放 100%,页面左边界为 284 twips、横向居中偏移为 173.06668 px;连续调用三次 zoom_step(true),每次重新 prepare,到 200% 时横向滚动为 2308 twips,左页边已越出视口约 270 px。直接 set_zoom(2.0) 时滚动为 3808 twips,左侧约 470 px 被裁掉,视口中心对应的页面横坐标从 6404 漂到 8308 twips。真实窗口使用同一路径放大后,行首 LEFT EDGE abcdefghij 消失,屏幕从 klmnopqrstuvwxyz 开始显示。现有新增测试只断言视口右端位于文档范围内,因此保留这一错误仍能通过。已独立构建 worker,运行现有视图测试:47 passed(两个剪贴板用例按开关跳过);注释检查通过;隔离副本中的左页边与锚点探针均失败。证据保留在 /tmp/ely-r27-steps.log、/tmp/ely-r27-probes-final.log、/tmp/ely-r27-native-long.log,复现代码在 /tmp/ely-r27-reproducer.log。修复方向:按当前页面框和居中偏移计算文档缩放位置,约束横向定位使左页边保持可见;回归测试覆盖连续缩放及左页边的实际可见区间。源码副本及独立构建目录已删除,原有跟踪文件散列一致。