Re: NSUndoManager and runModalForWindow: (again)
Re: NSUndoManager and runModalForWindow: (again)
- Subject: Re: NSUndoManager and runModalForWindow: (again)
- From: Keary Suska <email@hidden>
- Date: Mon, 16 Nov 2009 11:40:04 -0700
On Nov 16, 2009, at 10:34 AM, Kevin wrote:
> I searched the archives on this issue and found several posts with the same question with zero responses. Is NSUndoManager simply not supported in a modal window? Can one of the Apple engineers confirm this?
>
> Here's a recap of the problem I'm running into:
>
> I have a simple Core Data app which displays a list of entities in the main window. To create or add new entities, I use a second modal window with a separate managed object context (a scratchpad) so changes can be undone/redone without interfering with the main managed object context.
>
> The editing window is launched using runModalForWindow:. If I make a series of discrete changes in this modal window, doing a single undo results in undoing ALL my changes. Setting the run loop modes of NSUndoManager (obtained from the second managed object context) to contain NSModalPanelRunLoopMode doesn't appear to make any difference.
>
> If I don't launch the window using runModalForWindow: and simply use makeKeyAndOrderFront:, everything works as expected.
Are you sure that you know which NSUndoManager is being called? When not using a modal session it is possible that the API simply "does the right thing", or appears to under certain circumstances. There may be a combination of issues involved. My advice would be to make sure that when your modal session is active that the undo actions will always use the temporary MOC's undo manager.
Best,
Keary Suska
Esoteritech, Inc.
"Demystifying technology for your home or business"
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
This email sent to email@hidden