deckcraft/crates/model/src
Brandon Thomas 6334d689d2
Text: Ctrl+arrows, Ctrl+Backspace/Delete and other text keys work like PowerPoint (#268) (#333)
* Text: Ctrl+arrows, Ctrl+Backspace/Delete and the other text keys work like PowerPoint (#268)

Observed black-box in PowerPoint for Windows on synthetic text:
- Word stops (crates/model/src/words.rs): words, punctuation runs, symbol
  runs, tabs, line breaks and each CJK character are tokens; trailing spaces
  join the token before. it's, a-b, 3.14, 1,000 are one word; e.g., a_b and
  x@y.com are not. Grapheme clusters never split.
- Ctrl+Left/Right and Ctrl+Shift+Left/Right move by those stops, across
  paragraphs; with a selection they go on from its start/end. In a
  right-to-left paragraph Left and Right swap.
- Ctrl+Backspace deletes to the previous stop; Ctrl+Delete deletes the rest
  of the word, or spaces plus the next word, then applies PowerPoint's smart
  spacing. With a selection both work from its start.
- Ctrl+Up/Down by paragraph, Ctrl+Home/End to the text's ends.
- End on a wrapped line goes past the trailing space and the caret stays
  drawn at that line's end (TextSel::line_end); End again stays, Home
  returns to the same line.
- Ctrl+]/[ and Ctrl+Shift+>/< change font size (egui's Period/Comma/
  bracket key names now match registry shortcuts).
- Shift+F3 cycles lower -> Title -> UPPER; a caret changes its word.
- Double-click selects the word without trailing spaces; triple-click
  includes the paragraph mark.
- Mac keeps Option for words and Cmd for line/text ends (Session::mac_keys).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* rustfmt

* Canvas: one caret, drawn at a wrapped line's end after End

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-12 22:09:50 -04:00
..
anim.rs M0: workspace, model, geometry, fonts, text, renderer, engine, MCP and CLI 2026-10-05 23:27:20 -04:00
chart.rs M0: workspace, model, geometry, fonts, text, renderer, engine, MCP and CLI 2026-10-05 23:27:20 -04:00
defaults.rs Tables: styles the file defines are read, drawn and kept (#292) 2026-10-12 18:03:19 -04:00
edit.rs Text: Ctrl+arrows, Ctrl+Backspace/Delete and other text keys work like PowerPoint (#268) (#333) 2026-10-12 22:09:50 -04:00
lib.rs Text: Ctrl+arrows, Ctrl+Backspace/Delete and other text keys work like PowerPoint (#268) (#333) 2026-10-12 22:09:50 -04:00
resolve.rs Fills: a gradient without stops takes them from its style, and keeps none when saved (#330) 2026-10-12 22:01:29 -04:00
style.rs Rename SlideCraft to DeckCraft: crates, apps, binaries, app id, file extension (.deckcraft; .slidecraft files still open), packaging, docs; ROADMAP alpha and parity estimates 2026-10-06 01:46:40 -04:00
table.rs Tables: the table's own fill (a:tblPr fill) is drawn behind its cells (#294) 2026-10-12 18:05:12 -04:00
tests.rs Selection Pane: reorder by drag and drop, groups, Show/Hide All and Lock, as in PowerPoint (#133) (#332) 2026-10-12 22:05:44 -04:00
text.rs Text: WordArt transforms (prstTxWarp) draw, and their adjusts round-trip (#312) 2026-10-12 18:12:58 -04:00
theme.rs feat(text, fonts): UAX #9 BiDi and Arabic complex script typography engine (#4) 2026-10-09 10:48:26 -04:00
words.rs Text: Ctrl+arrows, Ctrl+Backspace/Delete and other text keys work like PowerPoint (#268) (#333) 2026-10-12 22:09:50 -04:00