R9.5: merge PR #6, ElyTable completion keys and overlay clicks

Enter and Tab are resolved by the worker against the kernel's current
candidates, after the typing queued before them. The dropdown arrow's
mouse blocker is at least as tall as the button.
This commit is contained in:
雷电芽衣 committed 2026-10-20 03:14:24 -04:00
commit ff317dd863
22 files changed
+696 -48

No files matched your search

+4 -3
View File
@@ -319,6 +319,7 @@
- [x] R9.2 合并 PR #1(用户定):选区画在已画好的图块之上,Omarchy 等主题的选区色不透明时盖住所选文字;画选区时不透明度至多 0.3,更低的照用(`view/render.rs`)。合并前在 Windows 上跑其测试 `selection_keeps_document_text_readable_across_themes` 通过,去掉上限即以对比度 1:1 失败;在 GitHub 以合并提交并入(bddf765),本地 main 随之合并
- [x] R9.3 #4 ElyTable 开自动筛选即内核崩溃(§9,用户 2026-10-20 定:发 0.1.9 前修好):选中整列(点列标)而该列看不出标题(全是文字或全空)时,Calc 以异步询问框问“首行作标题吗”;worker 在宣告它的回调里当场关掉,询问框的回调在半建成的对话框上加上筛选,下一次画图块即访问违例(Windows 0xc0000005,macOS SIGSEGV)。单格、数据块、首行、有数字列的整列都不问,不崩。补丁 `0053-lok-calc-autofilter-header-without-asking.patch`:LOK 下不问,首行作标题(询问框的默认,同 Excel)。测试:`client/tests/filter.rs` 的 `a_whole_column_without_a_clear_header_filters_from_its_first_row`(整列文字开筛选、画图块、条目不含首行)在未打补丁的内核上开筛选即失败。 审查两轮(与 R9.4 同审):第 1 轮一处注释超过十字,已改;第 2 轮通过。同时查出补丁 0049 用 `GetDoc()` 却未含 `doc.hxx`,Linux 的 gcc 编不过(MSVC 与 clang 经别的头文件带入),补上;三端源码树都为 53 个补丁,macOS 与 Linux 内核随之重建。
- [x] R9.4 Windows 上粘贴不可用(用户 2026-10-20 报,提示只写“the clipboard reads”):arboard 3.6.1 在 Windows 读 HTML 时不先查有无该格式,剪贴板只有纯文字(记事本、浏览器地址栏等)时报未知错误而不是“无此内容”,`clipboard::read` 先读 HTML,任何纯文字粘贴都失败;macOS 与 Linux 照报“无此内容”。`ely_platform::clipboard` 在 Windows 先以 `IsClipboardFormatAvailable` 查 “HTML Format”;粘贴失败的提示写出整条原因(`{:#}`,原先只有最外一层)。测试:`clipboard.rs` 的往返测试写纯文字后读回、无 HTML;`view/tests/input.rs` 把外来纯文字粘进文档(都要 `ELY_CLIPBOARD_TEST=1`,会覆盖剪贴板);去掉查验即两者都失败。
- [ ] R9.5 发布 0.1.9(用户 2026-10-20 定:先修好粘贴与 #2、#4 再发):首批六个应用;版本号,打标签由发布流程三端建包、签名公证、上传,发布说明中英两段
- [ ] R9.6 Gitea 上的过渡发布(用户 2026-10-20 定):0.1.8 及更早的应用在 Gitea 查更新,在 Gitea 推上 main 与 v0.1.9,发同名发布、同样的文件;其清单指向 GitHub 的下载,0.1.9 起从 GitHub 查
- [ ] R9.7 更新日志:0.1.9 发好后在用户桌面写中英两段的更新说明
- [x] R9.5 GitHub PR #6(FMVPJet,用户 2026-10-20 定:发 0.1.9 前确认并合并):ElyTable 函数候选按 Enter 即提交半个公式并下移;候选、参数提示与有效性的下拉按钮、输入说明的按下落到其下的格。作者未编译未运行。本机:`view::tests::formula` 三项与 `tests::aids` 一项通过;去掉 Enter 接受、去掉候选的鼠标阻挡、去掉 ElyTable 浮层的阻挡,各自的测试都失败。PR 的 ElyTable 测试两处改正:规则缺错误样式(补丁 0017 拒绝,规则未设上),空单格读不出选区文字。第 1 轮:下拉按钮高 24、挡鼠标的框只有行高(默认行 17),按钮下缘仍落到格上;框至少为按钮的主题高度,测试按按钮右下角(去掉即失败)。第 2 轮:Enter 按上次回报的候选接受,其后已排队的键入未计(`=sum` 后快速键入 `(1)` 再 Enter 得 `=sum(1)SUM()`);改由 worker 在执行时按内核此刻的候选判定(`worker/complete.rs`),Tab 同;测试压住 worker 排队键入再按 Enter 与 Tab(去掉 worker 的判定即失败)。
- [ ] R9.6 发布 0.1.9(用户 2026-10-20 定:先修好粘贴与 #2、#4 再发):首批六个应用;版本号,打标签由发布流程三端建包、签名公证、上传,发布说明中英两段
- [ ] R9.7 Gitea 上的过渡发布(用户 2026-10-20 定):0.1.8 及更早的应用在 Gitea 查更新,在 Gitea 推上 main 与 v0.1.9,发同名发布、同样的文件;其清单指向 GitHub 的下载,0.1.9 起从 GitHub 查
- [ ] R9.8 更新日志:0.1.9 发好后在用户桌面写中英两段的更新说明
+3
View File
@@ -0,0 +1,3 @@
FAIL
apps/ely-table/src/rules/aids.rs:115 — The mouse blocker covers the row-height wrapper (`size.max(16.0)` at line 125), while its `ControlSize::Sm` button is 24 px at standard density. On the default-height rows in the supplied E2 validation test, the button extends below that blocker, so pressing its lower edge still sends mouse input to the sheet underneath. Changing only the test's arrow coordinate to the button origin plus `(23 px, 23 px)` fails “the arrow press stays outside the grid”: `view.sent()` increases from 4 to 5. Expanding only the copied wrapper to 24 px makes that same test pass; logs are in `.work/r95-r1/probe-bottom-edge.log` and `probe-bottom-edge-expanded.log`. Make the blocking region cover the entire button using its actual themed size, and cover this lower-edge case in the regression test; the current test at `apps/ely-table/src/tests/aids.rs:67` samples only the row's center.
+3
View File
@@ -0,0 +1,3 @@
FAIL
crates/ely-lok/src/view/input.rs:273 — Enter accepts candidates from the last reported snapshot even when subsequent text is already queued; `completion.pending()` tracks accepted completions, not those edits. In A1, wait for the SUM candidate after typing `=sum`, then type `(1)` and press Enter before the worker reports the suffix. The isolated Windows probe produces `=sum(1)SUM()` and stays in A1 instead of committing and moving to A2. The same probe passes after removing only this new Enter branch (logs: `.work/r95-r2/probe-stale-enter-current.log`, `.work/r95-r2/probe-stale-enter-baseline.log`; probe source: `.work/r95-r2/probe-source.log`). Resolve acceptance against the state after preceding queued edits, and send ordinary Enter when no current candidate remains. Add a regression that delays the worker and queues a formula suffix followed by Enter.