Re: NSUndoManager and runModalForWindow: (again)
Re: NSUndoManager and runModalForWindow: (again)
- Subject: Re: NSUndoManager and runModalForWindow: (again)
- From: Kevin <email@hidden>
- Date: Mon, 16 Nov 2009 12:50:03 -0600
Thanks for the reply. To answer your question, the
windowWillReturnUndoManager: delegate method in my modal window
controller returns the temporary MOC's undo manager:
- (NSUndoManager *)windowWillReturnUndoManager:(NSWindow *)window
{
return [self.temporaryMOC undoManager];
}
I have confirmed that undo/redo is getting called on the temporary
MOC's undo manager as I can have changes in the main window, none of
which are affected if I undo/redo in the modal window.
Kevin
On Nov 16, 2009, at 12:40 PM, Keary Suska wrote:
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