• 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: Getting mouse clicks when the main loop is busy
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Getting mouse clicks when the main loop is busy


  • Subject: Re: Getting mouse clicks when the main loop is busy
  • From: Charles Srstka <email@hidden>
  • Date: Sun, 10 Nov 2013 15:06:53 -0600

On Nov 9, 2013, at 12:39 PM, Kyle Sluder <email@hidden> wrote:

> I would seriously consider implementing this approach. My general idea is to subclass NSDocumentController and put up a progress panel before loading the document.
>
> Unfortunately it doesn't look like NSDocumentController makes this easy. You'd have to put up the UI in -openDocumentWithContentsOfURL:display:completionHandler:, but you won't know if NSDocumentController has determined it actually needs to create a document until the completion handler executes. One workaround would be to delay-perform setting up the progress panel and tear it down in the completion handler, but that would only work for types that are opened asynchronously (the panel would never appear for synchronous loading). A more elaborate solution involving overriding -makeDocumentWithContentsOfURL: may also be required.
>
> This happens to be a problem I need to solve sometime soon, so thanks for getting me to chew on it.

What I usually do is just have NSDocument's readFromData/URL/fileWrapper/etc method not actually do much, and then in windowControllerDidLoadNib: put up a progress bar, and start the loading in a background thread. You can either do this by hiding the main window and displaying the progress bar in a separate window, or by showing the empty document window and putting up a sheet with the progress bar in it while the document window is populated with data.

You could use a global operation queue with a max concurrent operation count set in order to limit the number of threads that will be created in the Versions browser.

Charles

_______________________________________________

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: Getting mouse clicks when the main loop is busy
      • From: Kyle Sluder <email@hidden>
References: 
 >Getting mouse clicks when the main loop is busy (From: Graham Cox <email@hidden>)
 >Re: Getting mouse clicks when the main loop is busy (From: Fritz Anderson <email@hidden>)
 >Re: Getting mouse clicks when the main loop is busy (From: Graham Cox <email@hidden>)
 >Re: Getting mouse clicks when the main loop is busy (From: Kyle Sluder <email@hidden>)

  • Prev by Date: Re: Getting mouse clicks when the main loop is busy
  • Next by Date: Re: Getting mouse clicks when the main loop is busy
  • Previous by thread: Re: Getting mouse clicks when the main loop is busy
  • Next by thread: Re: Getting mouse clicks when the main loop is busy
  • Index(es):
    • Date
    • Thread