diff options
Diffstat (limited to 'chrome/browser/cocoa')
-rw-r--r-- | chrome/browser/cocoa/import_progress_dialog.mm | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/chrome/browser/cocoa/import_progress_dialog.mm b/chrome/browser/cocoa/import_progress_dialog.mm index 86cd872..a971f80 100644 --- a/chrome/browser/cocoa/import_progress_dialog.mm +++ b/chrome/browser/cocoa/import_progress_dialog.mm @@ -138,7 +138,8 @@ NSString* keyForImportItem(ImportItem item) { [self closeDialog]; [self release]; - MessageLoop::current()->Quit(); + // Break out of modal event loop. + [NSApp stopModal]; } @end @@ -171,6 +172,16 @@ void StartImportingWithUI(gfx::NativeWindow parent_window, new ProfileWriter(target_profile), first_run); + + // Display the window while spinning a message loop. + // For details on why we need a modal message loop see http://crbug.com/19169 + NSWindow* progress_window = [progress_dialog_ window]; + NSModalSession session = [NSApp beginModalSessionForWindow:progress_window]; [progress_dialog_ showWindow:nil]; - MessageLoop::current()->Run(); + while(1) { + if ([NSApp runModalSession:session] != NSRunContinuesResponse) + break; + MessageLoop::current()->RunAllPending(); + } + [NSApp endModalSession:session]; } |