Commit Graph
6 Commits
Author SHA1 Message Date
dotCooCoo 43ecaaa62a Type: Undo and Redo in a command batch put the caret where the step was
The Type tool heard of Undo and Redo only when they ran as top-level
commands. As steps of command.batch, they left the caret where it was,
and the tool took the batch for an outside edit. Session::execute now
tells the active tool about each nested edit.undo and edit.redo.

command.batch also tells the tool when it begins, ends or rolls back.
The Type tool keeps its caret and its edit records at the start of each
batch and puts them back when a failed batch rolls the documents back.
2026-10-29 10:10:58 +07:00
dotCooCoo c3af6605ef Type: Undo and Redo put the caret where the undone or redone edit was
While the Type tool edits type, Edit > Undo and Redo (the menu, the
keyboard, the History panel and MCP all run edit.undo and edit.redo)
left the caret at its byte offset, clamped to the text. Typing "abc"
before "XYZ" and pressing Undo left the caret after "XYZ".

The engine now tells the active tool about edit.undo and edit.redo
before it finishes the command. The Type tool keeps the edited text and
a list of the steps that changed it, and puts the caret, with nothing
selected, at the end of the span the step changed: where typed text
began after its Undo, after restored text after the Undo of a deletion,
and after retyped text after Redo. For the steps the tool made, it keeps
where the span ended, so text that repeats the characters next to it
puts the caret at the right end. A step that changes no characters,
such as a formatting change, leaves the caret and the selection as they
are. Typed lists keep their caret positions.
2026-10-29 10:10:58 +07:00
dotCooCoo f0c5de420b Type tools: Shift switches between horizontal and vertical, and Alt switches between area and path type
The reference app's shortcut list switches between its Type tools with
Shift and with Alt (Option). VectorCraft's Type tools had no such switch.

While no type is being edited, a press with Shift held makes new type
with the chosen tool's horizontal or vertical counterpart: Type and
Vertical Type, Area Type and Vertical Area Type, Type on a Path and
Vertical Type on a Path. A press with Alt held makes it with Type on a
Path in place of Area Type, or the reverse, in the same writing
direction. With both keys held, both switch. The keys held when the
press starts are the ones that count. The pointer shows the tool the
press acts as, and the chosen tool stays selected. While type is being
edited, Shift and Alt work as they did.

Docs: docs/target-app-parity.md.
2026-10-29 10:02:34 +07:00
Dylan M. Taylor 62588fd080 Separate selection tool pointer phases and clarify imports 2026-10-28 05:03:13 +00:00
aiongg 714aecc7b4 refactor(tools): move text.rs items to text/{plain,ports,tool}.rs 2026-10-26 21:45:33 +00:00
aiongg e8417d6c69 refactor(tools): move text.rs tests to text/tests.rs 2026-10-26 18:33:16 +00:00