Files
ElyOffice/tasks/reviews/R2.9-r2.md
T
2026-10-09 03:39:03 -04:00

1.7 KiB
Raw Blame History

FAIL

patches/libreoffice/0040-lok-calc-autofilter-keeps-its-rows.patch:61:bKeep 只检查 HasAutoFilter(),缺少当前光标属于该范围的判定,导致同表另一块数据的单格操作误用原筛选区。GetDBNearCursor 找不到命名范围时会返回该表的匿名范围,即使光标远离它;新增守卫跳过了原先计算连续数据区并核对位置的逻辑,bUseThis 因而一直为 true。复现:用 filter.rs 的 BLOCK 在 A1:A4 开自动筛选,在 D1:D3 写入 Other、9、10,B、C 列留空,再只点 D1 执行 data.autofilter;调用成功,导出 FODS 仍为 S.A1:S.A4,且其 display-filter-buttons="true" 消失,D1 的筛选列表为空。全新 worker 中重复结果一致。另起 worker 重建同样数据,在 D1 执行 data.filter,参数为 {"conditions":[{"field":0,"op":"equals","value":"9"}]};调用同样成功,实际对 A1:A4 筛选,导出第 2 至 4 行均带 table:visibility="filter",连 D2 中应保留的 9 也被隐藏。违反 TABLE-08 及 agents.md:266 的单格开筛选取当前数据区约定。修复方向:先核对单格与已有筛选区的归属,再决定固定其边界;光标属于另一数据块时按当前块重新定位,补充同表两块独立数据之间的单格切换和实际隐藏行回归。独立 worker 构建、4 个 filter 测试、8 个 rules 测试及 comments.py 均通过,现有测试漏掉此路径。上一轮三项缺陷已通过复查,关闭再撤销后应用条件的实际行可见性也已核对。证据:/tmp/ely-r29-r2-probe.log、/tmp/ely-r29-r2-confirm.log、/tmp/ely-r29-r2-filter.log、/tmp/ely-r29-r2-rules.log;探针及其临时文件已清理。