summaryrefslogtreecommitdiffstats
path: root/ui
diff options
context:
space:
mode:
authorrsesek@chromium.org <rsesek@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-24 19:59:20 +0000
committerrsesek@chromium.org <rsesek@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-24 19:59:20 +0000
commitf2dc06f6eed29ca8feb520c07d44a54670319e99 (patch)
tree248468d806890794afab7787a9b32ae46198e50b /ui
parent9e07ac8c9b412311e7e7b35c3dbb7ffe6e95d0a9 (diff)
downloadchromium_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.h2
-rw-r--r--ui/message_center/cocoa/tray_controller.mm35
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