Files
ElyOffice/tasks/reviews/C07.2-r2.md
T

14 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
FAIL
crates/ely-lok/src/worker.rs:286 — [P1] 上轮局部失效缺陷仍存在:编辑键继续调用 `events::bump`,在 `events.rs:127` 无条件设置 `all=true`,精确矩形仍会被整区失效覆盖,违反 LOK-03。固定补丁引擎实测:两段正文开头按 Return,批次为 `(generation=1, all=true, rects=[])`;远处 `(0,7680,3840,3840)` 图块编辑前后逐字节相同,`LokView::apply_batch` 仍清空全部缓存。纯点击及方向键已保持代际稳定,局部编辑的验收仍失败。修复方向:接通可靠的内容脏区来源,以相交矩形驱动重绘,并验证局部编辑保留未受影响的缓存图块。
crates/ely-lok/src/worker.rs:299 — [P1] 新增 `POST_UNO` 路径执行内容变更后没有产生失效或推进修订;当前固定 macOS 后端也没有图块失效回调。实测先编辑到 generation 1,再依次发送 `.uno:SelectAll`、`.uno:Delete`,重新绘制的像素已经改变,响应仍为 generation 1,事件批次为 `(1,false,[])`。`LokView::watch` 因代际相同直接继续等待,缓存中的旧正文会一直显示,违反 LOK-03。修复方向:将 UNO 内容变更纳入可靠的修订与脏区通知链,补充删除、撤销等命令执行后视图刷新的回归测试。
crates/ely-lok/src/view.rs:266 — [P1] `Geom::px_of` 已乘 DPI,`prepare` 又把其结果作为 GPUI `Pixels` 布局与绘制尺寸;GPUI 在 `paint_image` 内继续按窗口比例转换到设备像素,造成重复缩放。临时 GPUI 测试实测:zoom=1、DPI=2 时,3840 twips 图块生成 512 像素纹理,却绘制为 512 个逻辑像素;正确逻辑宽度应为 256。此时 `doc_point(256,0)` 返回 `(1920,0)`,正确文档位置应为 `(3840,0)`。因此跨 1x/2x 显示器会改变页面逻辑尺寸、可见范围及滚动距离,违反 LOK-04;现有几何测试仅验证公式往返,未覆盖 GPUI 单位。修复方向:用 zoom 转换文档与 GPUI 逻辑坐标,仅在纹理分辨率转换中应用 DPI,并验证实际绘制尺寸、命中位置及滚动转换。
crates/ely-lok/src/view.rs:204 — [P1] 图块送入 `RenderImage` 前交换红蓝通道,导致文档颜色错误。锁定版本的 GPUI `RenderImage` 要求 BGRA,`new` 原样保存帧字节;当前 LOK 同样返回 BGRA。固定引擎绘制红色正文实测得到 1182 个红色像素,样本为 `[0,0,255,255]`;将该像素通过实际 `finish_tile` 后,`RenderImage::as_bytes(0)` 变成 `[255,0,0,255]`,GPUI 会显示蓝色。现有黑白图块测试无法捕获此错误。修复方向:按 GPUI 的 BGRA 契约传递图块,添加红蓝可区分的渲染回归断言。
crates/ely-lok/src/view.rs:155 — [P1] 文档尺寸只在构造时读取,失效处理仅更新代际与缓存;滚动上限、图块请求范围和页面裁剪持续使用旧 `doc_size`。固定引擎实测:初始文档为 `(12808,16408)` twips,输入 80 次 Return 后内核尺寸增至 `(12808,32532)`;调用实际 `apply_batch` 后,视图尺寸仍为 `(12808,16408)`。新页面被第 282 行的范围检查及页面 mask 排除,滚动也无法到达新增内容,违反 LOK-04。修复方向:在文档尺寸变化时同步视图尺寸与滚动边界,覆盖增页、删页后的可见范围和裁剪。
crates/ely-lok/src/view.rs:139 — [P2] 事件任务被 `detach`,只有代际变化后才检查弱视图句柄;空闲批次始终走 `continue`。释放空闲 `LokView` 后,该任务仍每 50 毫秒轮询并强引用 worker,阻止其释放。临时 GPUI 测试已确认视图弱句柄失效,继续执行 20 个调度步骤后 worker 弱引用仍可升级;显式关闭文档使轮询返回错误后,任务才结束。关闭视图会留下持续工作的事件任务和引擎资源。修复方向:让订阅任务随视图释放而取消,或在每次等待前检查视图存活状态;补充空闲状态关闭视图后的任务与 worker 释放测试。