Files
ElyOffice/tasks/reviews/C09.1-r1.md
T

20 lines
5.1 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
apps/ely-table/src/sheets.rs:130 — 工作簿加载与工作表状态回显之间存在整窗崩溃窗口。`loaded` 先把 `extra: Default::default()` 的标签设为活动标签,`sheet_strip` 随即用空 choices 和 selected="0" 构造 Tabs;真实窗口启动时及 Cmd+N 新建第二个工作簿时均复现 `tabs Name("table-sheets") have no tab 0`,应用 abort,已有编辑随进程退出。现有三个应用测试只挂载返回 Empty 的 Blank 窗口,绕过了 Book 渲染;本轮 worker 构建、cargo check/test --workspace、doc-shell.sh、doc-props.sh 全通过仍漏过此故障。修复方向:让工作表列表与有效当前项就绪后再渲染工作表 Tabs,覆盖真实启动、打开及连续新建的首帧回归。
apps/ely-table/src/sheets.rs:151 — 工作表切换直接调用 worker,越过 LokView 的有序输入队列,待处理编辑会写到另一张表。具体复现:两张空表,显示第一张,在同一调度轮调用 `run_active("cell.enter", &["42"])` 后立即走 `show_sheet(1)`;队列完成后第一张 A1 为空,第二张 A1 为 42,保存 FODS 也确认了错误归属。临时副本中让切换等待原表输入落下后,同一回归通过。修复方向:把切表纳入同一输入顺序,或等已排队输入完成后切换,并加入保存后逐表核对内容的竞态回归。
crates/ely-lok/src/view.rs:273 — 自动滚动只响应文本光标 `batch.cursor`,Calc 的 `batch.cell.cursor` 只被赋值。真实窗口在名称框输入 A100 并回车,内核和名称框已经到 A100,画布仍显示第 1–32 行,活动单元格与填充柄都在可视区外;方向键移出可视区也走相同路径。修复方向:按文档类型把单元格光标变化接到可见区更新,覆盖远处跳转与键盘连续移动的画布、表头和选区断言。
crates/ely-lok/src/view.rs:401 — 冻结命令只改变内核状态,画布、表头、光标与输入仍共用一个随 scroll 平移的原点,冻结区域未参与视图变换。真实窗口在 B2 执行 Cells → Freeze or Unfreeze Panes 后向下滚动一屏,顶部变成第 32 行,首行随画布消失,违反 TABLE-02;现有 workbook 测试只发冻结命令。修复方向:读取内核冻结位置,并让冻结区与滚动区的图块、表头、选区及命中坐标使用对应变换;增加冻结后双向滚动及点击编辑回归。
apps/ely-table/src/cells.rs:197 — 行高/列宽对话框把选区操作缩成当前光标的一行或一列。真实窗口选 A1:C1,在 Column Width 输入 3 厘米并提交,只有 A 列变宽,B、C 保持原宽;多行选区的 Row Height 同样只传当前 Row。修复方向:菜单尺寸操作针对内核当前选区内的全部行列,保留拖动单个表头边界的明确单行/列目标,并分别验证多行、多列和不连续选区的保存结果。
apps/ely-table/src/sheets.rs:139 — 整个标签条共用一个作用于活动表的右键菜单,丢失右键点击的工作表身份。真实窗口创建 Sheet1、Sheet2,保持 Sheet2 活动,右键 Sheet1 并选 Rename Sheet…,弹出的标题和输入框均为 Sheet2;复制、隐藏、删除也使用同一活动表路由。修复方向:菜单请求携带被点击表的身份,让各命令及影响确认绑定该目标,并加入非活动标签的右键回归。
patches/libreoffice/0012-lok-calc-cursor-references-merge.patch:42 — 删除影响查询只检查静态引用 token,把动态跨表引用误报为零影响。真实内核复现:S.A1 为 `Hello 世界`,U.A1 为 `=INDIRECT("S.A1")`;查询 S 得到 `formulas=0,names=0,first=""`,界面据此声称没有其他表或名称引用它。删除 S 后保存的 U.A1 从 `Hello 世界` 变成 `#REF!`。修复方向:将动态依赖纳入删除影响说明,对无法确定的引用显示明确限制,并加入删除前后值与错误状态的回归。
crates/ely-office/src/files.rs:83 — 平面 ODF 的宏检测只读取根标签上的命名空间绑定,漏掉子元素合法声明的 Basic 命名空间。具体样本:正常 `office:document` 根,在 `office:script` 上声明 `xmlns:ooo="http://openoffice.org/2004/office"`,其下含 `ooo:library-embedded` 与 Basic 模块。该 FODS 经真实 LOK 成功加载为工作表 S,保存后 Basic 库仍存在,`macro_risk` 却返回 false,应用省略风险状态和宏处理提示,违反 LOK-11。修复方向:按 XML 命名空间及元素局部名解析完整作用域,加入嵌套声明、前缀替换及命名空间遮蔽回归。
apps/ely-table/src/grid.rs:172 — 自绘行列表头只有 mouse-down 回调,缺少角色、可访问名称、Tab 停靠、焦点环和键盘激活。真实窗口 AX 树包含工作簿标签、两个输入框、网格文本区和工作表标签,所有可点击行列表头均缺席;键盘和辅助技术无法定位并激活 A 列或第 1 行表头,违反 agents.md 的可按压元素规则及 UX-03、UX-12。修复方向:为表头提供对应语义、可见焦点与键盘选择操作,并以真实 AX 树和键盘流程验证整行、整列及扩展选择。