gridcraft/docs
neilcawse fa1dcd73e2 UI: Paste button and menus paste the system clipboard; freeze regression test (#273)
In 0.5.0 a click anywhere on the Home ribbon's Paste button (label,
icon or dropdown arrow) froze the app for good. home() called
paste.secondary_clicked() inside ctx.data_mut(); after any click egui
answers that with ctx.input(), which takes the context lock the closure
already holds, so the UI thread waited on itself. Sampling the hung
0.5.0 process on macOS shows the main thread parked in
RawRwLock::lock_exclusive_slow under Context::write <- data_mut <-
ribbon::home. #272 moved the query out of the closure; it landed after
the 0.5.0 release, which is the build both reporters used.

No test ever clicked the Paste button itself, which is how this
shipped. The new test clicks it, then opens its menu with a secondary
click and picks Paste Values, on a worker thread with a timeout so a
regression fails instead of hanging the run. With #272 reverted it
fails (egui's debug lock check panics after 10 s); with it, it passes.
The Paste button gets an accessible "Paste" name so the test (and
screen readers) can find it, the same way Pictures and Border presets
are named.

With the freeze gone, the button still did not do what it says: it
pasted GridCraft's own copy only (GridState::system_clipboard was never
assigned), so text copied in another app gave "Nothing to paste." The
ribbon button, its options menu's Paste, the cell and header context
menus and the macOS Edit menu now read the system clipboard through a
new paste_text host service and paste it like Cmd/Ctrl+V does, falling
back to GridCraft's own copy when there is no text (or no service, as
on the web). Asking egui for the clipboard instead (RequestPaste) was
tried and stalled the macOS event loop until the next input event.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 20:51:39 -04:00
..
brand Rename SheetCraft to GridCraft everywhere (crates, apps, bundle ids, packaging, docs) 2026-10-06 01:39:08 -04:00
images Roadmap: alpha and parity estimates; README gallery with PivotTable, Format Chart and Page Break Preview screenshots 2026-10-06 01:46:43 -04:00
architecture.md Progress docs: target-app parity, gaps, alpha gate, readiness by audience (#189) 2026-10-10 14:09:06 -04:00
cell-pictures.md Support static pictures inside cells with XLSX roundtrip (#61) 2026-10-10 12:43:27 -04:00
chart-parity.md Charts: read, write and draw trendlines 2026-10-11 16:39:31 -04:00
cli.md CLI: check subcommand - cached-value calc oracle and XLSX round-trip fidelity on any corpus 2026-10-11 16:39:30 -04:00
contributors.md About: contributor and model credits compiled in (grab bag + table, self-submitted names) (#2) 2026-10-07 21:16:34 -04:00
control-protocol.md Printing: expose native commands through control discovery 2026-10-12 16:50:03 +02:00
decisions.md Merge pull request #105 from harrisonoconnorhover/codex/cell-pictures 2026-10-10 15:02:44 -04:00
file-format-parity.md Merge pull request #436 from LloydNicholson/feat/open-encrypted 2026-10-11 18:06:04 -04:00
formula-input.md Fix #45: follow the selected language for formula editing 2026-10-10 13:48:20 -04:00
function-parity.md Merge pull request #419 from neilcawse/fix/function-fixes 2026-10-11 18:05:41 -04:00
gaps.md Print: adopt craft-print with native settings and job feedback 2026-10-12 03:25:47 +02:00
hardware-parity.md Print: adopt craft-print with native settings and job feedback 2026-10-12 03:25:47 +02:00
localization-parity.md Merge pull request #335 from Losminek (author's merge with main) 2026-10-11 12:36:55 -04:00
mcp.md Rename SheetCraft to GridCraft everywhere (crates, apps, bundle ids, packaging, docs) 2026-10-06 01:39:08 -04:00
ods-import.md #16: import ODS worksheet data without overwriting source files 2026-10-09 22:09:09 -04:00
parity-checklist.md Docs: catalog 274 / 290 after #211 and #193 2026-10-11 14:59:45 -04:00
release-playbook.md Rename SheetCraft to GridCraft everywhere (crates, apps, bundle ids, packaging, docs) 2026-10-06 01:39:08 -04:00
releasing.md Merge pull request #108 from harrisonoconnorhover/codex/desktop-shortcut 2026-10-10 14:32:51 -04:00
roadmap.md PivotTables: calculated fields (pivot.calculatedField) (#304) 2026-10-11 12:24:50 +02:00
target-app-parity.md Merge pull request #436 from LloydNicholson/feat/open-encrypted 2026-10-11 18:06:04 -04:00
ui-parity.md UI: Paste button and menus paste the system clipboard; freeze regression test (#273) 2026-10-12 20:51:39 -04:00
xlsb-import.md #92: import XLSB worksheet data and saved formula results 2026-10-09 22:19:36 -04:00