Re: Best way to hook into the run loop?
Re: Best way to hook into the run loop?
- Subject: Re: Best way to hook into the run loop?
- From: Quincey Morris <email@hidden>
- Date: Sun, 6 Dec 2009 12:00:09 -0800
On Dec 6, 2009, at 04:36, Graham Cox wrote:
> On 06/12/2009, at 10:57 PM, Mike Abdullah wrote:
>
>> But why are you opening a group without registering an undo action? Why not just wait until the first action actually needs to be registered?
>
> I tried it but it doesn't work. I forget the details now as this was my first approach and that was a long time ago, but basically the undo manager didn't tolerate having groups deferred until a task was actually received. It would crash, but without the code, I couldn't say why .
I'm not sure I understand this point. Are you talking about a situation with 'setGroupsByEvent:YES' or 'setGroupsByEvent:NO'? Either way, an explicit call to 'beginUndoGrouping:' is *by definition* deferred, since it obviously can't happen the instant an event is dequeued. The length of time between dequeuing an event and invoking an undo manager method seems irrelevant. But I ask mainly out of curiosity because ...
> My fourth approach is to write my own bloody undo manager and have done with it. Result so far - bliss.
I think that's a perfectly reasonably thing to have done. The functionality described by the NSUndoManager docs certainly doesn't *seem* difficult to re-implement. I haven't tried it, but now you have, and you've pretty much verified that fact.
It's also interesting that the documentation:
http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/UndoArchitecture/Articles/UndoManager.html#//apple_ref/doc/uid/20000205-CJBDJCCJ
has this statement (in the overview):
> An undo manager collects all undo operations that occur within a single cycle of the run loop, so that performing an undo reverts all changes that occurred during the cycle.
Taken literally, that would seem to say that NSUndoManager's API contract doesn't support undo actions that span events. FWIW.
_______________________________________________
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