On 6/24/2016 9:42 AM, Alan Ezust wrote:
There is another thread on this very subject from last week:
http://lists.qt-project.org/pipermail/interest/2016-June/023114.html
http://lists.qt-project.org/pipermail/interest/2016-June/023116.html
I agree with you, the QUndoStack design is really odd and the need to
execute commands while pushing (in my view) makes it less flexible than it
could be. I wonder if we will hear from anyone who likes this design?
It has been my experience that this is the typical design of an Undo system.
You invoke redo() as you inject the undo action into the stack, effectively
killing two birds with one stone. You don't push an action onto the stack
unless it has actually been applied. If the Undo stack did not apply the
action, there's no contract in place to guarantee that the action has been, or
will be, applied in another context. A subsequent undo() on an action that
was never applied means you might (in the best case) corrupt the application's
data.
It's an effective design, requiring less code, and guaranteeing a valid stack
state.
Just my $0.02.
_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest