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

Side by Side Diff: chrome/browser/ui/cocoa/browser_window_cocoa.mm

Issue 7621061: Restoring a session should restore window minimization state (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressing Mark's comments. Created 9 years, 4 months 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 #include "chrome/browser/ui/cocoa/browser_window_cocoa.h" 5 #include "chrome/browser/ui/cocoa/browser_window_cocoa.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/message_loop.h" 9 #include "base/message_loop.h"
10 #include "base/sys_string_conversions.h" 10 #include "base/sys_string_conversions.h"
(...skipping 26 matching lines...) Expand all
37 #import "chrome/browser/ui/cocoa/toolbar/toolbar_controller.h" 37 #import "chrome/browser/ui/cocoa/toolbar/toolbar_controller.h"
38 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" 38 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h"
39 #include "chrome/common/chrome_notification_types.h" 39 #include "chrome/common/chrome_notification_types.h"
40 #include "chrome/common/pref_names.h" 40 #include "chrome/common/pref_names.h"
41 #include "content/browser/tab_contents/tab_contents.h" 41 #include "content/browser/tab_contents/tab_contents.h"
42 #include "content/common/native_web_keyboard_event.h" 42 #include "content/common/native_web_keyboard_event.h"
43 #include "content/common/notification_service.h" 43 #include "content/common/notification_service.h"
44 #include "grit/chromium_strings.h" 44 #include "grit/chromium_strings.h"
45 #include "grit/generated_resources.h" 45 #include "grit/generated_resources.h"
46 #include "ui/base/l10n/l10n_util_mac.h" 46 #include "ui/base/l10n/l10n_util_mac.h"
47 #include "ui/base/ui_base_types.h"
47 #include "ui/gfx/rect.h" 48 #include "ui/gfx/rect.h"
48 49
50 // Replicate specific 10.7 SDK declarations for building with prior SDKs.
51 #if !defined(MAC_OS_X_VERSION_10_7) || \
52 MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_7
53
54 enum {
55 NSWindowAnimationBehaviorDefault = 0,
56 NSWindowAnimationBehaviorNone = 2,
57 NSWindowAnimationBehaviorDocumentWindow = 3,
58 NSWindowAnimationBehaviorUtilityWindow = 4,
59 NSWindowAnimationBehaviorAlertPanel = 5
60 };
61 typedef NSInteger NSWindowAnimationBehavior;
62
63 @interface NSWindow (LionSDKDeclarations)
64 - (NSWindowAnimationBehavior)animationBehavior;
65 - (void)setAnimationBehavior:(NSWindowAnimationBehavior)newAnimationBehavior;
66 @end
67
68 #endif // MAC_OS_X_VERSION_10_7
69
49 BrowserWindowCocoa::BrowserWindowCocoa(Browser* browser, 70 BrowserWindowCocoa::BrowserWindowCocoa(Browser* browser,
50 BrowserWindowController* controller, 71 BrowserWindowController* controller)
51 NSWindow* window)
52 : browser_(browser), 72 : browser_(browser),
53 controller_(controller), 73 controller_(controller),
54 confirm_close_factory_(browser) { 74 confirm_close_factory_(browser) {
55 // Listen for bookmark bar visibility changes and set the initial state; we 75 // Listen for bookmark bar visibility changes and set the initial state; we
56 // need to listen to all profiles because of normal profile/incognito issues. 76 // need to listen to all profiles because of normal profile/incognito issues.
57 registrar_.Add(this, 77 registrar_.Add(this,
58 chrome::NOTIFICATION_BOOKMARK_BAR_VISIBILITY_PREF_CHANGED, 78 chrome::NOTIFICATION_BOOKMARK_BAR_VISIBILITY_PREF_CHANGED,
59 NotificationService::AllBrowserContextsAndSources()); 79 NotificationService::AllBrowserContextsAndSources());
60 registrar_.Add(this, chrome::NOTIFICATION_SIDEBAR_CHANGED, 80 registrar_.Add(this, chrome::NOTIFICATION_SIDEBAR_CHANGED,
61 Source<SidebarManager>(SidebarManager::GetInstance())); 81 Source<SidebarManager>(SidebarManager::GetInstance()));
62 } 82 }
63 83
64 BrowserWindowCocoa::~BrowserWindowCocoa() { 84 BrowserWindowCocoa::~BrowserWindowCocoa() {
65 } 85 }
66 86
67 void BrowserWindowCocoa::Show() { 87 void BrowserWindowCocoa::Show() {
68 // The Browser associated with this browser window must become the active 88 // The Browser associated with this browser window must become the active
69 // browser at the time |Show()| is called. This is the natural behaviour under 89 // browser at the time |Show()| is called. This is the natural behaviour under
70 // Windows, but |-makeKeyAndOrderFront:| won't send |-windowDidBecomeMain:| 90 // Windows, but |-makeKeyAndOrderFront:| won't send |-windowDidBecomeMain:|
71 // until we return to the runloop. Therefore any calls to 91 // until we return to the runloop. Therefore any calls to
72 // |BrowserList::GetLastActive()| (for example, in bookmark_util), will return 92 // |BrowserList::GetLastActive()| (for example, in bookmark_util), will return
73 // the previous browser instead if we don't explicitly set it here. 93 // the previous browser instead if we don't explicitly set it here.
74 BrowserList::SetLastActive(browser_); 94 BrowserList::SetLastActive(browser_);
75 95
76 [window() makeKeyAndOrderFront:controller_]; 96 ui::WindowShowState show_state = browser_->GetSavedWindowShowState();
97 if (show_state == ui::SHOW_STATE_MINIMIZED) {
98 // Turn off swishing when restoring minimized windows. When creating
99 // windows from nibs it is necessary to |orderFront:| prior to |orderOut:|
100 // then |miniaturize:| when restoring windows in the minimized state.
101 NSWindowAnimationBehavior savedAnimationBehavior = 0;
102 if ([window() respondsToSelector:@selector(animationBehavior)] &&
103 [window() respondsToSelector:@selector(setAnimationBehavior:)]) {
104 savedAnimationBehavior = [window() animationBehavior];
105 [window() setAnimationBehavior:NSWindowAnimationBehaviorNone];
106 }
107
108 [window() makeKeyAndOrderFront:controller_];
109
110 [window() orderOut:controller_];
111 [window() miniaturize:controller_];
112
113 // Restore window animation behavior.
114 if ([window() respondsToSelector:@selector(animationBehavior)] &&
115 [window() respondsToSelector:@selector(setAnimationBehavior:)]) {
116 [window() setAnimationBehavior:savedAnimationBehavior];
117 }
118 } else {
119 [window() makeKeyAndOrderFront:controller_];
120 }
77 } 121 }
78 122
79 void BrowserWindowCocoa::ShowInactive() { 123 void BrowserWindowCocoa::ShowInactive() {
80 [window() orderFront:controller_]; 124 [window() orderFront:controller_];
81 } 125 }
82 126
83 void BrowserWindowCocoa::SetBounds(const gfx::Rect& bounds) { 127 void BrowserWindowCocoa::SetBounds(const gfx::Rect& bounds) {
84 gfx::Rect real_bounds = [controller_ enforceMinWindowSize:bounds]; 128 gfx::Rect real_bounds = [controller_ enforceMinWindowSize:bounds];
85 129
86 SetFullscreen(false); 130 SetFullscreen(false);
87 NSRect cocoa_bounds = NSMakeRect(real_bounds.x(), 0, 131 NSRect cocoa_bounds = NSMakeRect(real_bounds.x(), 0,
88 real_bounds.width(), 132 real_bounds.width(),
89 real_bounds.height()); 133 real_bounds.height());
90 // Flip coordinates based on the primary screen. 134 // Flip coordinates based on the primary screen.
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
207 } 251 }
208 252
209 gfx::Rect BrowserWindowCocoa::GetBounds() const { 253 gfx::Rect BrowserWindowCocoa::GetBounds() const {
210 return GetRestoredBounds(); 254 return GetRestoredBounds();
211 } 255 }
212 256
213 bool BrowserWindowCocoa::IsMaximized() const { 257 bool BrowserWindowCocoa::IsMaximized() const {
214 return [window() isZoomed]; 258 return [window() isZoomed];
215 } 259 }
216 260
261 bool BrowserWindowCocoa::IsMinimized() const {
262 return [window() isMiniaturized];
263 }
264
217 void BrowserWindowCocoa::SetFullscreen(bool fullscreen) { 265 void BrowserWindowCocoa::SetFullscreen(bool fullscreen) {
218 [controller_ setFullscreen:fullscreen]; 266 [controller_ setFullscreen:fullscreen];
219 } 267 }
220 268
221 bool BrowserWindowCocoa::IsFullscreen() const { 269 bool BrowserWindowCocoa::IsFullscreen() const {
222 return !![controller_ isFullscreen]; 270 return !![controller_ isFullscreen];
223 } 271 }
224 272
225 bool BrowserWindowCocoa::IsFullscreenBubbleVisible() const { 273 bool BrowserWindowCocoa::IsFullscreenBubbleVisible() const {
226 return false; 274 return false;
(...skipping 406 matching lines...) Expand 10 before | Expand all | Expand 10 after
633 681
634 NSWindow* BrowserWindowCocoa::window() const { 682 NSWindow* BrowserWindowCocoa::window() const {
635 return [controller_ window]; 683 return [controller_ window];
636 } 684 }
637 685
638 void BrowserWindowCocoa::UpdateSidebarForContents(TabContents* tab_contents) { 686 void BrowserWindowCocoa::UpdateSidebarForContents(TabContents* tab_contents) {
639 if (tab_contents == browser_->GetSelectedTabContents()) { 687 if (tab_contents == browser_->GetSelectedTabContents()) {
640 [controller_ updateSidebarForContents:tab_contents]; 688 [controller_ updateSidebarForContents:tab_contents];
641 } 689 }
642 } 690 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/cocoa/browser_window_cocoa.h ('k') | chrome/browser/ui/cocoa/browser_window_cocoa_unittest.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698