Index: chrome/browser/ui/panels/panel_window_controller_cocoa.mm |
diff --git a/chrome/browser/ui/panels/panel_window_controller_cocoa.mm b/chrome/browser/ui/panels/panel_window_controller_cocoa.mm |
index 0576fcc44e54af4f10e9998d34e6f4f19f9a4df6..bdcbbbf24e4c1aaefd29e891c80e2eb4655eea97 100644 |
--- a/chrome/browser/ui/panels/panel_window_controller_cocoa.mm |
+++ b/chrome/browser/ui/panels/panel_window_controller_cocoa.mm |
@@ -80,6 +80,7 @@ enum { |
if ((self = [super initWithWindowNibPath:nibpath owner:self])) { |
windowShim_.reset(window); |
animateOnBoundsChange_ = YES; |
+ alwaysOnTop_ = YES; |
} |
contentsController_.reset( |
[[TabContentsController alloc] initWithContents:nil]); |
@@ -117,8 +118,7 @@ enum { |
DCHECK(titlebar_view_); |
DCHECK_EQ(self, [window delegate]); |
- if (!windowShim_->panel()->manager()->is_full_screen()) |
- [window setLevel:NSStatusWindowLevel]; |
+ [self updateWindowLevel]; |
if (base::mac::IsOSSnowLeopardOrLater()) { |
[window setCollectionBehavior: |
@@ -634,8 +634,7 @@ enum { |
} |
- (void)fullScreenModeChanged:(bool)isFullScreen { |
- NSWindow* window = [self window]; |
- [window setLevel:(isFullScreen ? NSNormalWindowLevel : NSStatusWindowLevel)]; |
+ [self updateWindowLevel]; |
jennb
2012/03/08 23:44:19
You've ignored the isFullScreen param...
jianli
2012/03/09 21:48:58
Yes since updateWindowLevel checks windowShim_->pa
|
} |
- (BOOL)canBecomeKeyWindow { |
@@ -646,4 +645,19 @@ enum { |
// cases when minimized Panel is getting keyboard input, invisibly. |
return windowShim_->panel()->expansion_state() == Panel::EXPANDED; |
} |
+ |
+- (void)setAlwaysOnTop:(bool)onTop { |
+ if (alwaysOnTop_ == onTop) |
+ return; |
+ alwaysOnTop_ = onTop; |
+ [self updateWindowLevel]; |
+} |
+ |
+- (void)updateWindowLevel { |
+ if (![self isWindowLoaded]) |
+ return; |
+ BOOL onTop = alwaysOnTop_ && |
+ !windowShim_->panel()->manager()->is_full_screen(); |
+ [[self window] setLevel:(onTop ? NSStatusWindowLevel : NSNormalWindowLevel)]; |
+} |
@end |