On 06/24/2016 11:52 AM, Bob Hood wrote:
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.
I have been using it for a while and find it acceptable as well.
Create a command to do something, push it onto the stack and you are done.
I had an issue with "macros" until I just determined that I needed to use them
all of the time.
Just my $0.02.
_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest
_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest