For instance, in the sequence Select, Move Selection, Deselect, go back to Move Selection, move it more,
previously the changes got merged into the existing Move Selection.
Now a second Move Selection is created branching off of the first.
- Fixes undoing past Text tool, where otherwise it would trap Ctrl+Z for the textbox
- To access these undoables, you have to use the Document History window
- When holding down Ctrl+Z or Ctrl+Shift+Z, it will now save only once or twice (at the end and usually the begining), instead of saving/syncing constantly, causing it to lag and not even show what's going on
- This fixes a situation where redo-after-cancel wouldn't work:
User cancels operation
(in cancel():) op finalized, creating undoable -> sync to DB
(in cancel():) cancel goes back to history node at start of cancel -> sync to DB
DB syncs first update -> undoable("Session Sync")
DB syncs second update -> undoable("Session Sync")
The history ends on "Session Sync", on a branch separate from the canceled operation.
- Conditionally create an undoable for Deselect in case there's a Session Sync update in between selecting and deselecting (in Multi-User mode), and otherwise modify the undoable for Select/Free-Form Select
- Multi-User: Don't sync to the database CONSTANTLY while smearing a selection! (I should still add debouncing!)
Since I'm triggering session-update for every undoable, and creating an undoable when syncing from the database, this created a situation where, when you did multiple gestures rapidly, it would cause an infinite loop of writing to the database.
- Add a guard against that.
- Clarify function name and logs.
- Remove the whole ugly hacky module. Most things only modify the canvas when creating undoables now. Only a few things modify undoables after creating them.
- Formally disable pointer operations playback, instead of just leaving it accidentally disabled.
- The Color Eraser (color replacement) feature now supports patterns (i.e. with Black and White mode)
- This breaks the preview for transparent document mode. (Note: the dynamic cursor has never handled transparent document mode.)
- This breaks redo after Quick Undo
- May improve multi-user mode? Theoretically? Ignoring the above two things and maybe performance? I don't know.
Don't create undoables for shapes until end
- Quick Undo: Canceling a gesture, you can no longer redo to bring the canceled result back. I should fix this.
- The history view will no longer show these actions until the tool finishes. This is fine. In the future I could show in-progress actions formally.
- MultiTools: additional undoables are created. MultiTools are already inconsistent with how undoables are created tho.
- Multi-User mode: may be improved by this?