On Jul 12, 2009, at 7:10 AM, John Nairn wrote:

I added an option to cancel some action in the middle of the action. The most convenient coding was to implement the cancel by calling undo in the NSUndoManager, but this adds a "Redo" action to redo the partial or incomplete changes (and leaves the data in a poor state).

I can either re-code the change process or for an alternative, is there a way to perform to top level undo without having it moved to the redo stack? Or, similarly, is there a way to perform an undo and then remove the top most item in the redo stack?

First, I'd agree with I.S. that this sounds a little bit unclean, and that if there is a way to rearchitect this, I would.

But to answer your question, the "redo" action consists of all those things that get registered for undo _during_ the time when it is undoing (which is why it is the opposite set of changes from the undone changes). So it ought to work to disable registration during that time. I.e.:

        [undoManager disableUndoRegistration];
        [undoManager undo];
        [undoManager enableUndoRegistration];

Ought to undo the last top level undo group, but without registering anything on the redo stack.

Hope this helps,
        Greg
_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to