Files
ElyOffice/tasks/reviews/C07.3-r1.md
T

10 lines
2.5 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/view/input.rs:166 — 剪切先通过 worker 执行 `.uno:Cut`(worker/input.rs:104),再写系统剪贴板;写入失败时,正文已经被删除。复现:选择 `Hello 世界`,仅向 `clipboard::write` 注入写失败,再执行 `Input::Copy { cut: true }`;返回错误,保存后的段落为 `[""]`。失败时用户内容丢失,重试也失去原选区。修复方向:先取得复制数据并成功写入系统剪贴板,再删除选区;为写失败时正文和选区保留增加回归。
crates/ely-lok/src/view/input.rs:428 — IME 更新丢弃平台给出的组合内选区,`selected_text_range` 固定返回组合尾部(:397),`text_for_range` 固定返回 `None`(:383)。复现:在 GPUI 空窗口中调用 `EntityInputHandler::replace_and_mark_text_in_range(None, "nihao", Some(2..2), ...)`,再查询选区及 `0..2` 的组合文本,实际得到 `5..5` 和 `None`。输入法移动组合内光标后,平台与编辑器的范围失同步。修复方向:保存并按 UTF-16 更新组合选区、处理替换范围、提供组合文本查询;通过这些平台回调验证组合内编辑。
crates/ely-lok/src/worker/input.rs:134 — 粘贴只检查 `setClipboard`,然后发送未请求结果通知的 `.uno:Paste`(ffi/document.rs:85)并回复成功;实际导入失败被吞掉。复现:使用已构建的固定引擎,向打开的 FODT 粘贴 MIME 为 `image/png`、数据为 `b"this is not a png"` 的载荷,worker 返回 `OK`;随后保存,文档保持 `Hello 世界`,`<draw:image` 数量为 0。输入队列因此也收不到失败。修复方向:检查支持格式的数据及实际内核粘贴结果,将解析或执行失败回传为错误,并增加合法 MIME 搭配损坏数据的回归。
crates/ely-lok/examples/lokview.rs:109 — 真窗口鼠标测试仅检查预先设好的焦点(:81),没有断言点击改变光标或拖动改变选区;IME 单测直接调用 `compose`(view/tests/input.rs:47),绕过平台 marked-text 回调,窗口脚本也只输入英文。复现:在隔离副本中移除 `LokView::render` 的全部鼠标处理器,并让 `replace_and_mark_text_in_range` 空执行,启用剪贴板的窗口脚本仍输出 `ok: lokview`,原有 39 项单测全部通过。鼠标桥和中文组合入口失效仍会通过验收。修复方向:从真实窗口事件和平台 IME 回调触发输入,分别断言文档光标、选区、组合更新、提交和取消的结果,并要求上述变异使相应测试失败。