Some extra changes introduced:
* DocUndo & CmdTransaction were simplified: removing the saved
counter, and storing a specific UndoState pointing to the state that
matches the version in the disk
* DocUndo::onDeleteUndoState() can generate a
impossibleToBackToSavedState() if the saved state is deleted. This
might fix some bugs where a "save changes" dialog weren't displayed
after undoing and making changes (probably related to #3542, but not
sure)
Some extra work is needed to avoid showing the "save changes" dialog
if we are close to the saved state and only non-modification undo
states separate us from there. E.g. if we open a file, select the
canvas, and close it, Aseprite now shows the "save changes" dialog,
this wasn't true in previous versions.
Several performance issues fixed (as we avoid keeping a ListBox with
ListItem in sync with the UndoHistory/UndoStates). There is still some
room for improvement: e.g. grouping several ui::View::updateView() in
just one if several onAddUndoState() will be called (e.g. when we are
running a script without transactions).