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 d0a4eaff15623f012f420e7f425f2ac22823f709..bfbe6f054d6a8d2b5f12b777e010f78c501d6ed5 100644 |
--- a/chrome/browser/ui/panels/panel_window_controller_cocoa.mm |
+++ b/chrome/browser/ui/panels/panel_window_controller_cocoa.mm |
@@ -81,6 +81,7 @@ enum { |
windowShim_.reset(window); |
animateOnBoundsChange_ = YES; |
canBecomeKeyWindow_ = YES; |
+ alwaysOnTop_ = YES; |
} |
contentsController_.reset( |
[[TabContentsController alloc] initWithContents:nil]); |
@@ -118,8 +119,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: |
@@ -637,8 +637,7 @@ enum { |
} |
- (void)fullScreenModeChanged:(bool)isFullScreen { |
- NSWindow* window = [self window]; |
- [window setLevel:(isFullScreen ? NSNormalWindowLevel : NSStatusWindowLevel)]; |
+ [self updateWindowLevel]; |
} |
- (BOOL)canBecomeKeyWindow { |
@@ -650,4 +649,18 @@ enum { |
return canBecomeKeyWindow_; |
} |
+- (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 |