Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(244)

Side by Side Diff: chrome/browser/app_controller_mac.mm

Issue 340023: Fix window restore behaviour on Mac. (Closed)
Patch Set: Fix namespace naming Created 11 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « chrome/browser/app_controller_cppsafe_mac.h ('k') | chrome/browser/sessions/session_service.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #import "chrome/browser/app_controller_mac.h" 5 #import "chrome/browser/app_controller_mac.h"
6 6
7 #include "app/l10n_util_mac.h" 7 #include "app/l10n_util_mac.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/mac_util.h" 9 #include "base/mac_util.h"
10 #include "base/message_loop.h" 10 #include "base/message_loop.h"
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 - (void)openPendingURLs; 46 - (void)openPendingURLs;
47 - (void)getUrl:(NSAppleEventDescriptor*)event 47 - (void)getUrl:(NSAppleEventDescriptor*)event
48 withReply:(NSAppleEventDescriptor*)reply; 48 withReply:(NSAppleEventDescriptor*)reply;
49 - (void)openFiles:(NSAppleEventDescriptor*)event 49 - (void)openFiles:(NSAppleEventDescriptor*)event
50 withReply:(NSAppleEventDescriptor*)reply; 50 withReply:(NSAppleEventDescriptor*)reply;
51 - (void)windowLayeringDidChange:(NSNotification*)inNotification; 51 - (void)windowLayeringDidChange:(NSNotification*)inNotification;
52 - (BOOL)userWillWaitForInProgressDownloads:(int)downloadCount; 52 - (BOOL)userWillWaitForInProgressDownloads:(int)downloadCount;
53 - (BOOL)shouldQuitWithInProgressDownloads; 53 - (BOOL)shouldQuitWithInProgressDownloads;
54 @end 54 @end
55 55
56 // True while AppController is calling Browser::OpenEmptyWindow(). We need a
57 // global flag here, analogue to BrowserInit::InProcessStartup() because
58 // otherwise the SessionService will try to restore sessions when we make a new
59 // window while there are no other active windows.
60 static bool g_is_opening_new_window = false;
61
56 @implementation AppController 62 @implementation AppController
57 63
58 // This method is called very early in application startup (ie, before 64 // This method is called very early in application startup (ie, before
59 // the profile is loaded or any preferences have been registered). Defer any 65 // the profile is loaded or any preferences have been registered). Defer any
60 // user-data initialization until -applicationDidFinishLaunching:. 66 // user-data initialization until -applicationDidFinishLaunching:.
61 - (void)awakeFromNib { 67 - (void)awakeFromNib {
62 pendingURLs_.reset(new std::vector<GURL>()); 68 pendingURLs_.reset(new std::vector<GURL>());
63 69
64 // We need to register the handlers early to catch events fired on launch. 70 // We need to register the handlers early to catch events fired on launch.
65 NSAppleEventManager* em = [NSAppleEventManager sharedAppleEventManager]; 71 NSAppleEventManager* em = [NSAppleEventManager sharedAppleEventManager];
(...skipping 416 matching lines...) Expand 10 before | Expand all | Expand 10 after
482 // through to the browser object to execute the command. This assumes that the 488 // through to the browser object to execute the command. This assumes that the
483 // command is supported and doesn't check, otherwise it would have been disabled 489 // command is supported and doesn't check, otherwise it would have been disabled
484 // in the UI in validateUserInterfaceItem:. 490 // in the UI in validateUserInterfaceItem:.
485 - (void)commandDispatch:(id)sender { 491 - (void)commandDispatch:(id)sender {
486 Profile* defaultProfile = [self defaultProfile]; 492 Profile* defaultProfile = [self defaultProfile];
487 493
488 NSInteger tag = [sender tag]; 494 NSInteger tag = [sender tag];
489 switch (tag) { 495 switch (tag) {
490 case IDC_NEW_TAB: 496 case IDC_NEW_TAB:
491 case IDC_NEW_WINDOW: 497 case IDC_NEW_WINDOW:
498 g_is_opening_new_window = true;
492 Browser::OpenEmptyWindow(defaultProfile); 499 Browser::OpenEmptyWindow(defaultProfile);
500 g_is_opening_new_window = false;
493 break; 501 break;
494 case IDC_NEW_INCOGNITO_WINDOW: 502 case IDC_NEW_INCOGNITO_WINDOW:
495 Browser::OpenEmptyWindow(defaultProfile->GetOffTheRecordProfile()); 503 Browser::OpenEmptyWindow(defaultProfile->GetOffTheRecordProfile());
496 break; 504 break;
497 case IDC_RESTORE_TAB: 505 case IDC_RESTORE_TAB:
498 Browser::OpenWindowWithRestoredTabs(defaultProfile); 506 Browser::OpenWindowWithRestoredTabs(defaultProfile);
499 break; 507 break;
500 case IDC_OPEN_FILE: 508 case IDC_OPEN_FILE:
501 Browser::OpenEmptyWindow(defaultProfile); 509 Browser::OpenEmptyWindow(defaultProfile);
502 BrowserList::GetLastActive()-> 510 BrowserList::GetLastActive()->
(...skipping 17 matching lines...) Expand all
520 // dock icon and there are no open windows. To match standard mac 528 // dock icon and there are no open windows. To match standard mac
521 // behavior, we should open a new window. 529 // behavior, we should open a new window.
522 - (BOOL)applicationShouldHandleReopen:(NSApplication*)theApplication 530 - (BOOL)applicationShouldHandleReopen:(NSApplication*)theApplication
523 hasVisibleWindows:(BOOL)flag { 531 hasVisibleWindows:(BOOL)flag {
524 // Don't do anything if there are visible windows. This will cause 532 // Don't do anything if there are visible windows. This will cause
525 // AppKit to unminimize the most recently minimized window. 533 // AppKit to unminimize the most recently minimized window.
526 if (flag) 534 if (flag)
527 return YES; 535 return YES;
528 536
529 // Otherwise open a new window. 537 // Otherwise open a new window.
538 g_is_opening_new_window = true;
530 Browser::OpenEmptyWindow([self defaultProfile]); 539 Browser::OpenEmptyWindow([self defaultProfile]);
540 g_is_opening_new_window = false;
531 541
532 // We've handled the reopen event, so return NO to tell AppKit not 542 // We've handled the reopen event, so return NO to tell AppKit not
533 // to do anything. 543 // to do anything.
534 return NO; 544 return NO;
535 } 545 }
536 546
537 - (void)initMenuState { 547 - (void)initMenuState {
538 menuState_.reset(new CommandUpdater(NULL)); 548 menuState_.reset(new CommandUpdater(NULL));
539 menuState_->UpdateCommandEnabled(IDC_NEW_TAB, true); 549 menuState_->UpdateCommandEnabled(IDC_NEW_TAB, true);
540 menuState_->UpdateCommandEnabled(IDC_NEW_WINDOW, true); 550 menuState_->UpdateCommandEnabled(IDC_NEW_WINDOW, true);
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
722 @end 732 @end
723 733
724 //--------------------------------------------------------------------------- 734 //---------------------------------------------------------------------------
725 735
726 // Stub for cross-platform method that isn't called on Mac OS X. 736 // Stub for cross-platform method that isn't called on Mac OS X.
727 void ShowOptionsWindow(OptionsPage page, 737 void ShowOptionsWindow(OptionsPage page,
728 OptionsGroup highlight_group, 738 OptionsGroup highlight_group,
729 Profile* profile) { 739 Profile* profile) {
730 NOTIMPLEMENTED(); 740 NOTIMPLEMENTED();
731 } 741 }
742
743 namespace app_controller_mac {
744
745 bool IsOpeningNewWindow() {
746 return g_is_opening_new_window;
747 }
748
749 } // namespace app_controller_mac
OLDNEW
« no previous file with comments | « chrome/browser/app_controller_cppsafe_mac.h ('k') | chrome/browser/sessions/session_service.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698