On 14 Mar 2012, at 5:26 AM, Luc Van Bogaert wrote: > On 13 Mar 2012, at 22:07, Kyle Sluder wrote: > >> On Mar 13, 2012, at 1:49 PM, Luc Van Bogaert wrote: >> >>> Hi, >>> >>> In my document-based app, I am using NSDocument's NSUndoManager to >>> implement undo/redo. As part of my document objects, I have to deal with a >>> custom object, for which I would also like to implement undo/redo. I know >>> NSResponder has undo/redo features, but how should I implement this for a >>> custom object? >> >> Not sure what you're asking here. What is your custom object--a view, a >> controller, a model object? Should it use the same undo manager as all the >> other objects? > > I would like to implement undo/redo for a model object which in turn is also > a ivar backed property of a document object. I'm already using the document's > undo manager to undo/redo setting the model object property. Once the > property is set, the application has features to change properties of the > model object. I'm not sure how to implement undo/redo for the changes of the > model object's properties and ivars.
I still don't fully understand your design. Is your problem that you feel you can undo assignment at the top level (the document's to-one relationship to the model object), but not changes to attributes and relationships of the model object itself? If the document/window controller did the changes to the attributes (undo is a user-level concept, so there has to be a controller somewhere in the chain leading up to it), you'd have the document's undo manager, and the controller could register the changes itself. (registerUndo… / prepareWithInvocationTarget:) If the relationship to the model attributes is more complicated, then (1) it isn't in response to a user/controller event, and it shouldn't be undoable (undo is a user-level concept); or in some rare case, (2) you'll have to pass the controller or its undo manager down to the model object somehow, so it can do the registration. I feel I'm being vague and obvious, but as I say, I don't quite get what you're trying to do. — F _______________________________________________ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com