mirror of
https://github.com/storytold/gridcraft.git
synced 2026-10-29 13:16:50 -06:00
Engine: a command that runs its own undo groups makes one undo step for itself
execute treated any change in the group epoch as 'the group owns the step'. A command that edited outside its own group, or whose group rolled back before it edited, left that edit with no undo step or only part of it. Now only a group that was open before the command (or is still open after) owns the step; a command that opened and closed its own groups replaces their steps with one entry for the command.
This commit is contained in:
@@ -51,7 +51,9 @@ Actions made of many commands (macros, a debugger that runs one step per call) u
|
||||
- **Undo groups.** `Session::grouped(label, f)` runs `f` as one undo step and rolls every change
|
||||
back if `f` fails; `group_begin`, `group_end` and `group_rollback` do the same across calls.
|
||||
While a group is open on a document, its commands add no undo steps of their own and Undo and
|
||||
Redo are disabled there. Groups nest; the outermost one makes the step.
|
||||
Redo are disabled there. Groups nest; the outermost one makes the step. A command that opens and
|
||||
closes its own groups still makes one undo step for itself, covering its edits inside and outside
|
||||
the groups.
|
||||
- **Recording buffer** (`record.rs`). `Session::start_recording` collects each successful
|
||||
top-level command with the document, sheet and selection it ran in, without secret parameters.
|
||||
Commands run by other commands are not recorded, and the buffer is independent of the journal
|
||||
|
||||
Reference in New Issue
Block a user