BreadthFirstUndo
Jump to navigation
Jump to search
ok, breadth first undo:
- Take a document with an oval and a square
- Resize the oval.
- Move the square.
- Set the oval's stroke width
Normal undo would undo the square, then the oval.
Breadth first undo would allow the user to undo either the square or the oval. The edits in the document can be considered a sequence of parallel edits, the order of undo on any particular element is only defined by edits on it, or on something that affects it. The undo history becomes:
New document New oval Resize oval Set stroke New square Move square
Another way to change undo is to provide a branch in the history whenever an undo followed by an edit occurs. For example,
- Take a document with an oval and a square
- Resize the oval.
- Move the square.
- Set the oval's stroke width
- undo, undo
- add spiral
The history of this document could be displayed like this:
Resize oval Move square Set oval stroke width Add spiral
The two concepts can be merged to give an edit tree for each object in the document, the traditional undo being threaded through the tree.