Index: ui/message_center/message_center_tray.cc |
diff --git a/ui/message_center/message_center_tray.cc b/ui/message_center/message_center_tray.cc |
index a571a2319315a4d2e77b7db9cd01b7cb9b5cf54d..f5bf22e3cae4686cfb61cd6fa75170333ab8aec0 100644 |
--- a/ui/message_center/message_center_tray.cc |
+++ b/ui/message_center/message_center_tray.cc |
@@ -10,6 +10,7 @@ |
#include "ui/base/l10n/l10n_util.h" |
#include "ui/message_center/message_center.h" |
#include "ui/message_center/message_center_tray_delegate.h" |
+#include "ui/message_center/message_center_types.h" |
namespace message_center { |
@@ -31,10 +32,11 @@ bool MessageCenterTray::ShowMessageCenterBubble() { |
if (message_center_visible_) |
return true; |
- HidePopupBubble(); |
+ HidePopupBubbleInternal(); |
message_center_visible_ = delegate_->ShowMessageCenter(); |
- message_center_->SetMessageCenterVisible(message_center_visible_); |
+ message_center_->SetVisibility(message_center::VISIBILITY_MESSAGE_CENTER); |
+ NotifyMessageCenterTrayChanged(); |
return message_center_visible_; |
} |
@@ -50,11 +52,16 @@ void MessageCenterTray::MarkMessageCenterHidden() { |
if (!message_center_visible_) |
return; |
message_center_visible_ = false; |
- message_center_->SetMessageCenterVisible(false); |
+ |
// Some notifications (like system ones) should appear as popups again |
// after the message center is closed. |
- if (message_center_->HasPopupNotifications()) |
+ if (message_center_->HasPopupNotifications()) { |
ShowPopupBubble(); |
+ return; |
+ } |
+ |
+ message_center_->SetVisibility(message_center::VISIBILITY_TRANSIENT); |
+ |
NotifyMessageCenterTrayChanged(); |
} |
@@ -78,25 +85,35 @@ void MessageCenterTray::ShowPopupBubble() { |
return; |
popups_visible_ = delegate_->ShowPopups(); |
+ |
NotifyMessageCenterTrayChanged(); |
} |
bool MessageCenterTray::HidePopupBubble() { |
if (!popups_visible_) |
return false; |
- |
- delegate_->HidePopups(); |
- popups_visible_ = false; |
+ HidePopupBubbleInternal(); |
NotifyMessageCenterTrayChanged(); |
return true; |
} |
+void MessageCenterTray::HidePopupBubbleInternal() { |
+ if (!popups_visible_) |
+ return; |
+ |
+ delegate_->HidePopups(); |
+ popups_visible_ = false; |
+} |
+ |
void MessageCenterTray::ShowNotifierSettingsBubble() { |
if (popups_visible_) |
- HidePopupBubble(); |
+ HidePopupBubbleInternal(); |
message_center_visible_ = delegate_->ShowNotifierSettings(); |
+ message_center_->SetVisibility(message_center::VISIBILITY_SETTINGS); |
+ |
+ NotifyMessageCenterTrayChanged(); |
} |
void MessageCenterTray::OnNotificationAdded( |
@@ -138,14 +155,12 @@ void MessageCenterTray::OnQuietModeChanged(bool in_quiet_mode) { |
} |
void MessageCenterTray::OnMessageCenterChanged() { |
- if (message_center_visible_) { |
- if (message_center_->NotificationCount() == 0) |
- HideMessageCenterBubble(); |
- } |
+ if (message_center_visible_ && message_center_->NotificationCount() == 0) |
+ HideMessageCenterBubble(); |
if (popups_visible_ && !message_center_->HasPopupNotifications()) |
- HidePopupBubble(); |
- else if (message_center_->HasPopupNotifications()) |
+ HidePopupBubbleInternal(); |
+ else if (!popups_visible_ && message_center_->HasPopupNotifications()) |
ShowPopupBubble(); |
NotifyMessageCenterTrayChanged(); |