R5.3: ElyDoc drags the cursor's table borders, one kernel command per drop at the read's revision; three rounds used, last fixes tested
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
d07f0ddb7c
commit
e6e5aea7a1
21 files changed
+832
-15
No files matched your search
+1
-1
@@ -248,7 +248,7 @@
|
||||
|
||||
- [x] R5.1 属性栏:光标在表格里时表格组排在最前(同 Word 的表格布局页签),否则次序不变(DOC-07) — R3 PASS(组件 9ff403d:属性组按标题记折叠)
|
||||
- [x] R5.2 右键菜单(DOC-02、07、08、11、12):原先只在内核菜单带拼写建议时才显示,其余右键无反应;改为照 Word 按目标出 Ely 的菜单,开在所点之处:剪切、复制、粘贴为图标行;正文为链接…、新建批注;表格单元格另有插入 ▸(左侧列、右侧列、上方行、下方行)、删除 ▸(行、列、表格)、合并单元格、拆分单元格 ▸(两列、两行)、平均分布各行与各列;图片为文字环绕 ▸、置于顶层 ▸、置于底层 ▸、插入题注…、新建批注;拼写错词时建议与“全部忽略”在最上。目标与各项可否取自内核这次给的菜单,命令只经 `COMMANDS`,文案进中英目录 — R2 PASS(链接…随内核的 `.uno:InsertHyperlink`:须选中可编辑的文字,未选中时灰显)
|
||||
- [ ] R5.3 拖动表格边线(DOC-07):读内核的 `LOK_CALLBACK_TABLE_SELECTED`(光标所在表格的列与行边线),指针在边线上变为调整指针,拖动时画参考线,松开以 `.uno:TableChangeCurrentBorderPosition` 改列宽或行高(左、内、右列边线;内、下行边线),一步撤销,按读到边线时的修订执行;内核在 LOK 下有意不处理边线的指针与拖动(`SwEditWin::changeMousePointer`、`RulerColumnDrag` 依赖 LOK 没有的标尺);未进入的表格先单击一次
|
||||
- [x] R5.3 拖动表格边线(DOC-07):读内核的 `LOK_CALLBACK_TABLE_SELECTED`(光标所在表格的列与行边线),指针在边线上变为调整指针,拖动时画参考线,松开以 `.uno:TableChangeCurrentBorderPosition` 改列宽或行高(左、内、右列边线;内、下行边线),一步撤销,按读到边线时的修订执行;内核在 LOK 下有意不处理边线的指针与拖动(`SwEditWin::changeMousePointer`、`RulerColumnDrag` 依赖 LOK 没有的标尺);未进入的表格先单击一次 — 三轮用完,末轮修复已测(按住处与边线的偏移保留,原地单击不发命令;松开取所在处,出视图照跟;表格带其批次的修订)
|
||||
- [ ] R5.4 验收:Windows 真窗口逐项核对(右键四种目标、加行加列、拖动列宽与行高、撤销、保存后重开);`agents.md` 随之;逐条核对表
|
||||
- [ ] R5.5 ElyTable 与 ElyShow 核对同类问题(用户 2026-10-14 要求):右键是否有菜单、表格能否加删行列与调尺寸;查出的缺口照 R5.2、R5.3 的做法补齐
|
||||
- [ ] R5.6 Gitea #1:ElyShow 左侧缩略图条滚轮不滚动(同窗口右栏正常,Linux Wayland 报);查明根因再修,加滚轮回归测试
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
FAIL
|
||||
|
||||
- [P1] `crates/ely-lok/src/view/borders.rs:97` — New event batches replace the table and revision used by an active drag, while `Held` retains the old border index. Reproduce: insert a third column, hold the second inner border, undo the insertion while holding, then move the mouse. `clamp` at line 87 indexes entry 1 of a one-entry array and panics. When the index still exists, dropping instead applies the old drag to the changed table: the kernel probe moved the new border from 3323 to 3623 twips without a stale error. This breaks R5.3's read-revision requirement. Keep the drag's geometry and exact supplying revision together; never reinterpret its index against a newer table, and reject or cancel invalidated drags. Add regressions for undo and topology changes during a drag. Evidence: `.work/R5.3-r1-probes.log`.
|
||||
|
||||
- [P2] `crates/ely-lok/src/view/borders.rs:103` — The fixed six-pixel reach on both sides of every border consumes the interior of short rows. A normal 276-twip row is only 9.2 pixels high at 50% zoom, so the adjacent row-border hit regions overlap across its entire height. After entering the table, clicking the middle of the second row starts a border drag instead of positioning the caret; the input-handler probe reports `held border=true, sent delta=0`. Limit border hit regions according to the displayed neighboring geometry so ordinary cell clicks remain available, and test those clicks through `on_mouse_down` at reduced zoom. Evidence: `.work/R5.3-r1-hit.log`.
|
||||
|
||||
- [P3] `crates/ely-lok/src/view/borders.rs:129` — This new comment, the comment at line 145, and `crates/ely-lok/src/view/tests/borders.rs:16` each contain eleven words. They fail the project's explicit one-line, ten-word comment rule. Shorten all three to at most ten words.
|
||||
@@ -0,0 +1,5 @@
|
||||
FAIL
|
||||
|
||||
- [P1] `crates/ely-lok/src/view/borders.rs:115` — The table snapshot still receives the latest view revision rather than its supplying batch's revision. `apply_batch` first calls `seen_revision`, which keeps the maximum because input completions and event batches can arrive out of order. Reproduce: receive a two-column table at revision 1, insert a column and process its revision-2 input completion, then apply the delayed revision-1 batch and drag its inner border. The kernel probe moved the new table's border from 3324 to 3624 twips without a stale error. Holding geometry through subsequent updates fixes round one's active-drag case, but this ordering still violates R5.3's read-revision requirement. Store the exact supplying `batch.revision` with the geometry, independently of the latest view revision, and add an out-of-order batch/completion regression. Evidence: `.work/R5.3-r2/probes.log`.
|
||||
|
||||
- [P2] `crates/ely-lok/src/view/input.rs:337` — Releasing a border ignores `event.position` and commits the last position received by `on_mouse_move`. GPUI only dispatches that move handler while the pointer is over the canvas, so dragging outside freezes the guide and commits the wrong width. Reproduce with a 450-pixel canvas: hold the inner column border at x=426.87, move to x=440, continue outside to x=480, then release. Dispatching through the same GPUI registrations and actual LokView handlers leaves the guide at x=440 and commits 5182 twips instead of the release position's 5782. Track pointer movement throughout the held drag and apply the release coordinates before issuing the single border command; cover release outside the canvas with an event-dispatch regression. Evidence: `.work/R5.3-r2/probes.log`.
|
||||
@@ -0,0 +1,5 @@
|
||||
FAIL
|
||||
|
||||
- [P2] `crates/ely-lok/src/view/borders.rs:163` — The drag uses the pointer's absolute position without retaining its initial offset from the border. Because `drop_border` calls `move_border` even without a mouse-move event, a stationary click within the border's hit area changes the document. Reproduce at 100% zoom: press and release 3 pixels right of a two-column table's inner border without moving. The painted-LokView GPUI dispatch probe sent one command and moved the kernel border from 6403 to 6448 twips. Preserve the press position or grab offset, derive movement from that origin, and issue no command for a stationary click. Add an off-center stationary-click regression while keeping release-coordinate handling. Evidence: `.work/R5.3-r3/probes.log` and `.work/R5.3-r3/probe.source.log`.
|
||||
|
||||
- [P3] `crates/ely-lok/src/view/borders.rs:172` — The comment “Lets go at `position`: one command, at the held table's revision.” contains eleven words. Running `tests/scripts/comments.py` fails on this line under the project's ten-word limit. Shorten it to at most ten words. Evidence: `.work/R5.3-r3/comments.log`.
|
||||
Reference in new issue
Block a user