diff options
author | rsesek@chromium.org <rsesek@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-05-24 19:59:20 +0000 |
---|---|---|
committer | rsesek@chromium.org <rsesek@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-05-24 19:59:20 +0000 |
commit | f2dc06f6eed29ca8feb520c07d44a54670319e99 (patch) | |
tree | 248468d806890794afab7787a9b32ae46198e50b /ui | |
parent | 9e07ac8c9b412311e7e7b35c3dbb7ffe6e95d0a9 (diff) | |
download | chromium_src-f2dc06f6eed29ca8feb520c07d44a54670319e99.zip chromium_src-f2dc06f6eed29ca8feb520c07d44a54670319e99.tar.gz chromium_src-f2dc06f6eed29ca8feb520c07d44a54670319e99.tar.bz2 |
[Mac][MC] Close the message center tray when it loses key state.
This requires a custom NSPanel subclass to allow the tray to become key in
the first place.
BUG=243128
TEST=With --enable-rich-notifications, open the message center tray from the menu bar. Click outside it. The message center closes.
Review URL: https://chromiumcodereview.appspot.com/15840005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@202154 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui')
-rw-r--r-- | ui/message_center/cocoa/tray_controller.h | 2 | ||||
-rw-r--r-- | ui/message_center/cocoa/tray_controller.mm | 35 |
2 files changed, 27 insertions, 10 deletions
diff --git a/ui/message_center/cocoa/tray_controller.h b/ui/message_center/cocoa/tray_controller.h index 8009a15..622635a 100644 --- a/ui/message_center/cocoa/tray_controller.h +++ b/ui/message_center/cocoa/tray_controller.h @@ -20,7 +20,7 @@ class MessageCenterTray; // The window controller for the message center tray. This merely hosts the // view from MCTrayViewController. MESSAGE_CENTER_EXPORT -@interface MCTrayController : NSWindowController { +@interface MCTrayController : NSWindowController<NSWindowDelegate> { @private message_center::MessageCenterTray* tray_; // Weak, indirectly owns this. diff --git a/ui/message_center/cocoa/tray_controller.mm b/ui/message_center/cocoa/tray_controller.mm index 5165ca4..6b78d65 100644 --- a/ui/message_center/cocoa/tray_controller.mm +++ b/ui/message_center/cocoa/tray_controller.mm @@ -11,20 +11,33 @@ #include "ui/message_center/message_center_tray.h" #include "ui/message_center/message_center_tray_delegate.h" +@interface MCTrayWindow : NSPanel +@end + +@implementation MCTrayWindow + +- (BOOL)canBecomeKeyWindow { + return YES; +} + +@end + @implementation MCTrayController - (id)initWithMessageCenterTray:(message_center::MessageCenterTray*)tray { - scoped_nsobject<NSPanel> window( - [[NSPanel alloc] initWithContentRect:ui::kWindowSizeDeterminedLater - styleMask:NSBorderlessWindowMask - backing:NSBackingStoreBuffered - defer:NO]); - [window setHasShadow:YES]; - [window setHidesOnDeactivate:NO]; - [window setLevel:NSFloatingWindowLevel]; - + scoped_nsobject<MCTrayWindow> window( + [[MCTrayWindow alloc] initWithContentRect:ui::kWindowSizeDeterminedLater + styleMask:NSBorderlessWindowMask + backing:NSBackingStoreBuffered + defer:NO]); if ((self = [super initWithWindow:window])) { tray_ = tray; + + [window setDelegate:self]; + [window setHasShadow:YES]; + [window setHidesOnDeactivate:NO]; + [window setLevel:NSFloatingWindowLevel]; + viewController_.reset([[MCTrayViewController alloc] initWithMessageCenter: tray_->message_center()]); NSView* contentView = [viewController_ view]; @@ -54,4 +67,8 @@ [[self window] setFrame:windowFrame display:YES]; } +- (void)windowDidResignKey:(NSNotification*)notification { + tray_->HideMessageCenterBubble(); +} + @end |