On Thursday, January 03, 2008, at 03:37PM, "Christiaan Hofman" <[EMAIL PROTECTED]> wrote: > >On 4 Jan 2008, at 12:34 AM, Adam R. Maxwell wrote: > >> >> On Thursday, January 03, 2008, at 02:17PM, "Christiaan Hofman" >> <[EMAIL PROTECTED]> wrote: >>> >>> On 3 Jan 2008, at 10:57 PM, Adam R. Maxwell wrote: >>> >>>> >>>> On Thursday, January 03, 2008, at 01:39PM, "Christiaan Hofman" >>>> <[EMAIL PROTECTED]> wrote: >>>>> >>>>> On 3 Jan 2008, at 10:27 PM, Adam R. Maxwell wrote: >>>>> >>>>>> >>>>>> On Thursday, January 03, 2008, at 12:25PM, "Christiaan Hofman" >>>>>> <[EMAIL PROTECTED]> wrote: >>>>>>> >>>>>>> On 3 Jan 2008, at 8:55 PM, Adam R. Maxwell wrote: >>>>>>> >>>>>>>> Okay, that's right. There's still a retain cycle in the >>>>>>>> migration >>>>>>>> controller that should be unnecessary. When the document window >>>>>>>> closes, it closes the migration window regardless of what it's >>>>>>>> doing at the time. >>>>>>>> >>>>>>> >>>>>>> Why is there a retain cycle? And shouldn't the migration be >>>>>>> stopped >>>>>>> when the document window closes? >>>>>> >>>>>> Yes, it should be stopped, but can the document window actually >>>>>> close before this stops? I can't make it do that. >>>>>> >>>>>> If I brute-force a document close like this >>>>>> >>>>>> if (current > 200) { >>>>>> [[self document] close]; >>>>>> NSLog(@"closed document %@", [self document]); >>>>>> } >>>>>> >>>>>> in the loop, the document clears the window controller's >>>>>> backreference. Since the enumerator retains the publications >>>>>> array, it just exhausts the loop and then sends [nil >>>>>> updatePreviews]. It's not a big deal, but it's nice to avoid >>>>>> extra >>>>>> bookkeeping if the kit already takes care of it. >>>>> >>>>> But if the migration window closes the document will also be >>>>> cleared, >>>>> but then it should still send updatePreviews when it finishes. >>>>> That's >>>>> why the document should be retained. So this is not a good example. >>>> >>>>>>>>>>> + // keep a reference to the document, because it may go >>>>>>>>>>> away >>>>>>>>>>> when the window closes while we're busy >>>> >>>> So the comment refers to closing the migration window? I'm not >>>> able to close that before the loop finishes, either. If this were >>>> possible, though, shouldn't it send -stop when the migration window >>>> closes? This isn't working in a separate thread, so I don't see >>>> why anything, let alone the document, needs to stop it. >>> >>> It may be hard, but as the main thread is run it's not impossible. >>> I'm not sure if it should be stopped when the window closes, without >>> any warning. Though I don't trust it when it would go on modifying >>> the items after the document window closes. >> >> Hmm...I guess it partly depends on how sendEvent: and NSRunLoop >> interact. If that's a concern let's just remove the NSRunLoop call >> and replace it with [[self window] displayIfNeeded]. Then there >> will certainly be no event processing until that method exits. > >But it has the disadvantage that you get the beach ball.
There's a progress bar so the user knows that something is happening. I think the beachball is correct in this situation, actually; that bugged me about running the runloop, since you can't actually do anything with the UI (click buttons etc), but it looks as if you could. ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ Bibdesk-develop mailing list Bibdesk-develop@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/bibdesk-develop