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

5.1 KiB
Raw Blame History

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 树和键盘流程验证整行、整列及扩展选择。