• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Best way to hook into the run loop?
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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

  • Follow-Ups:
    • Re: Best way to hook into the run loop?
      • From: Graham Cox <email@hidden>
References: 
 >Best way to hook into the run loop? (From: Graham Cox <email@hidden>)
 >Re: Best way to hook into the run loop? (From: Mike Abdullah <email@hidden>)
 >Re: Best way to hook into the run loop? (From: Graham Cox <email@hidden>)
 >Re: Best way to hook into the run loop? (From: Quincey Morris <email@hidden>)
 >Re: Best way to hook into the run loop? (From: Graham Cox <email@hidden>)
 >Re: Best way to hook into the run loop? (From: Uli Kusterer <email@hidden>)
 >Re: Best way to hook into the run loop? (From: Graham Cox <email@hidden>)
 >Re: Best way to hook into the run loop? (From: Mike Abdullah <email@hidden>)
 >Re: Best way to hook into the run loop? (From: Graham Cox <email@hidden>)

  • Prev by Date: Re: NSPopUpButton questions
  • Next by Date: Re: NSPopUpButton questions
  • Previous by thread: Re: Best way to hook into the run loop?
  • Next by thread: Re: Best way to hook into the run loop?
  • Index(es):
    • Date
    • Thread