R5.6: ElyShow right-click menus, PowerPoint-style; Impress table borders drag; R3 PASS
The canvas offers Ely's menu by target: slide (layouts, comment), text (bullets, numbering, comment), shape or text box, picture (replace, crop), table (insert, delete, merge), each item gated by the kernel's state for its own command. Impress's table borders read as text and drag through R5.3's path; patch 0047 reports every edge's bounds and makes the left edge drag. A line past its bound never moves against the drag, so a still press sends nothing. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
411d32b97e
commit
35a7bbb904
21 files changed
+920
-24
No files matched your search
@@ -151,4 +151,6 @@ P0 次序:W-01、K-01、L-01、O-01、W-02、L-02、W-03、L-03、W-04、L-04
|
||||
- [ ] P3-08 Windows(AMD):多个 worker 同时启动时内核的 OpenCL 探测卡在驱动的 `clCreateCommandQueue` 里数分钟(`openclwrapper::switchOpenCLDevice`);测试以 `SAL_DISABLE_OPENCL=1` 绕开;是否在 `ely.xcd` 关掉 `UseOpenCL` 待用户定
|
||||
- [ ] P3-09 Windows:内核给的选区文字与文本导出以 CRLF 换行,三个 ElyTable 单测按 LF 比对(`tests::data::sort_filter_duplicates_and_columns_run_from_their_dialogs`、`a_column_button_sorts_its_own_block_not_the_cursors`、`tests::output::exports_write_the_shown_sheet_as_text`);导出该用哪种换行待定
|
||||
- [ ] P3-10 Windows:`crates/ely-office/tests/restart.rs` 设 `HOME` 想用临时目录,但 Windows 上 `data_dir` 取已知文件夹(不看 `HOME`),测试在真实的 ElyDoc 配置里运行;中途被杀即留下挡路的 `lok-verify.fodt` 文件夹,真实 ElyDoc 的内核核对随之失败(2026-10-14 审查中出现,已手动删去)
|
||||
- [ ] P3-11 ElyShow:正编辑表格单元格时在幻灯片空白处右键,内核(Impress)只结束编辑、不发 `LOK_CALLBACK_CONTEXT_MENU`,再右键一次才有幻灯片菜单;Windows 实测,他端未核;修需内核补丁
|
||||
- [ ] P3-12 Windows:`output::tests::targets_skip_hidden_slides_and_pad_numbers` 以 `/` 拼的路径比对,Windows 的 `join` 用 `\`,单测恒失败(代码无误)
|
||||
|
||||
+1
-1
@@ -251,6 +251,6 @@
|
||||
- [x] R5.3 拖动表格边线(DOC-07):读内核的 `LOK_CALLBACK_TABLE_SELECTED`(光标所在表格的列与行边线),指针在边线上变为调整指针,拖动时画参考线,松开以 `.uno:TableChangeCurrentBorderPosition` 改列宽或行高(左、内、右列边线;内、下行边线),一步撤销,按读到边线时的修订执行;内核在 LOK 下有意不处理边线的指针与拖动(`SwEditWin::changeMousePointer`、`RulerColumnDrag` 依赖 LOK 没有的标尺);未进入的表格先单击一次 — 三轮用完,末轮修复已测(按住处与边线的偏移保留,原地单击不发命令;松开取所在处,出视图照跟;表格带其批次的修订)
|
||||
- [x] R5.4 验收:Windows 真窗口逐项核对(右键四种目标、加行加列、拖动列宽与行高、撤销、保存后重开);`agents.md` 随之;逐条核对表 — R2 PASS(拼写建议在 Windows 上内核不给,未核对,P3-01)
|
||||
- [x] R5.5 ElyTable 右键(用户 2026-10-14 要求核对同类问题):网格右键原无菜单(内核给了,Ely 丢弃),行列表头只收左键;照 Excel 按目标出 Ely 的菜单:单元格(剪切、复制、粘贴,插入、删除、清除内容,合并拆分,设置单元格格式;ElyTable 无批注界面,不列),行与列表头(插入、删除、行高或列宽、隐藏、取消隐藏);可否取自内核对各项命令的状态(补丁 0045);表头在选中对象或编辑图形文字时照样选行列(补丁 0046);ElyDoc 的菜单机制移入 `ely-office` 共用 — 三轮用完,末轮修复已测(编辑图形文字时右键表头:补丁 0046 结束编辑、留下文字、退出绘图模式再选行列;行与列两种表头各有回归测试,存出的文件里两个图形的文字都在)
|
||||
- [ ] R5.6 ElyShow 右键与表格:画布右键原无菜单;照 PowerPoint 按目标出菜单(幻灯片、文本框、图形、表格、图片);表格菜单在光标进单元格后才有可否(内核对整表选中全报不可用);拖动表格边线照 R5.3(Impress 的 `LOK_CALLBACK_TABLE_SELECTED` 以字符串写数值,`table::read` 须收下)
|
||||
- [x] R5.6 ElyShow 右键与表格:画布右键原无菜单;照 PowerPoint 按目标出菜单(幻灯片、文本框、图形、表格、图片);表格菜单在光标进单元格后才有可否(内核对整表选中全报不可用);拖动表格边线照 R5.3(Impress 的 `LOK_CALLBACK_TABLE_SELECTED` 以字符串写数值,`table::read` 须收下) — R3 PASS(补丁 0047:Impress 两轴首尾边线带上下限,内侧行线取行自身最小高度,最左列边线可拖并随之移动表格;正编辑表格单元格时在空白处右键无菜单为内核所限,BUGS P3-11)
|
||||
- [ ] R5.7 Gitea #1:ElyShow 左侧缩略图条滚轮不滚动(同窗口右栏正常,Linux Wayland 报);查明根因再修,加滚轮回归测试
|
||||
- [ ] R5.8 0.1.5 发布(用户 2026-10-14 定):等 ElyMark 会话的 R4 做完;版本 0.1.5,Windows 与 WSL2 的 Linux 在本机建,macOS 在 Mac mini 上拉取后本机建;全部产物上传到 Gitea 的 v0.1.5 发布
|
||||
@@ -0,0 +1,7 @@
|
||||
FAIL
|
||||
|
||||
- [P2] `crates/ely-lok/src/table.rs:57` — Impress serializes an empty border list as `"entries": ""`, but this parser still requires an array. Inserting a 1×2, 2×1, or 1×1 table produces `an unreadable table` and fails to update its border state; the 2×2 control succeeds. The same problem occurs when deleting down to one row or column. Accept Boost's empty-string representation as an empty list while rejecting malformed values, and add single-row/single-column regressions. Reproduced against the rebuilt worker with `SAL_DISABLE_OPENCL=1`; payloads are in `.work/R5.6-r1-table-edge-probe.log`.
|
||||
|
||||
- [P2] `crates/ely-lok/src/view/borders.rs:73` — R5.6 now feeds Impress tables into this path, which unconditionally exposes the left edge as draggable. Impress's `column-left` operation does not resize an ordinary left-to-right table, although it adds an undo entry and passes the worker's success check. On a fresh 2×2 table, dragging that edge 480 twips right moves the guide but leaves the edge at 3929 twips; the interior and right-edge controls move the requested 480 twips. Implement a working Impress left-edge resize through the kernel bridge, preserving one-step undo, and test its resulting geometry. The new Impress regression covers only an interior column edge. Evidence: `.work/R5.6-r1-border-edge-probe.log`.
|
||||
|
||||
- [P2] `crates/ely-lok/src/view/borders.rs:104` — The reused Writer clamp permits an outer row or column to shrink to a fixed 40-twip gap, which does not match Impress's minimum sizes. For a fresh 2×2 table, the last inner row is at 545 and the bottom at 1091: dragging upward to the permitted minimum previews a bottom of 585 and sends an offset of -506, but the kernel lands at 1062. The released border therefore differs from the guide by 477 twips (about 32 pixels at 100% zoom); shrinking the right edge also lands short of its guide. Obtain and apply Impress's actual minimum sizes consistently to preview and commit, and add regressions at the shrink limits. Evidence: `.work/R5.6-r1-border-edge-probe.log`.
|
||||
@@ -0,0 +1,3 @@
|
||||
FAIL
|
||||
|
||||
- [P2] `crates/ely-lok/src/view/borders.rs:112` — Inner Impress borders still subtract Writer's 40-twip gap from the kernel's maximum, which already accounts for the neighbouring column's minimum width. In a 2×2 table, shrink the rightmost column to its minimum, then press and release the inner divider without moving it. The kernel reports `position = max = 3996` and the right edge at `4166`; `clamp(..., 0)` returns `-40`, so `drop_border` sends a resize instead of treating the click as a no-op. The kernel moves the divider to `3956` and adds an undo step. Apply Impress's reported inner bounds directly, retain the Writer gap only where required, and add a regression for a stationary divider beside a minimum-width column. Reproduced with the rebuilt worker and `SAL_DISABLE_OPENCL=1`; the failing assertion and resulting geometry are in `.work/R5.6-r2-stationary-probe.log` (probe source retained in `.work/R5.6-r2-probe-source.log`).
|
||||
@@ -0,0 +1 @@
|
||||
PASS
|
||||
Reference in new issue
Block a user