Index: ash/system/tray/system_tray.cc |
diff --git a/ash/system/tray/system_tray.cc b/ash/system/tray/system_tray.cc |
index c089947b6eeb0ff9baadcddfe90c3d04141ad83e..1663d5bb7e284ab217a2277598ec1272308f7bf0 100644 |
--- a/ash/system/tray/system_tray.cc |
+++ b/ash/system/tray/system_tray.cc |
@@ -30,7 +30,6 @@ |
#include "ash/system/tray_update.h" |
#include "ash/system/user/login_status.h" |
#include "ash/system/user/tray_user.h" |
-#include "ash/wm/shelf_layout_manager.h" |
#include "base/logging.h" |
#include "base/timer.h" |
#include "base/utf_string_conversions.h" |
@@ -71,7 +70,6 @@ SystemTray::SystemTray(internal::StatusAreaWidget* status_area_widget) |
network_observer_(NULL), |
update_observer_(NULL), |
user_observer_(NULL), |
- should_show_launcher_(false), |
default_bubble_height_(0), |
hide_notifications_(false) { |
} |
@@ -230,6 +228,10 @@ void SystemTray::SetHideNotifications(bool hide_notifications) { |
hide_notifications_ = hide_notifications; |
} |
+bool SystemTray::IsSystemBubbleVisible() const { |
+ return (bubble_.get() && bubble_->IsVisible()); |
+} |
+ |
bool SystemTray::IsAnyBubbleVisible() const { |
if (bubble_.get() && bubble_->IsVisible()) |
return true; |
@@ -238,6 +240,13 @@ bool SystemTray::IsAnyBubbleVisible() const { |
return false; |
} |
+bool SystemTray::IsMouseInNotificationBubble() const { |
+ if (!notification_bubble_.get()) |
+ return false; |
+ return notification_bubble_->bubble_view()->GetBoundsInScreen().Contains( |
+ gfx::Screen::GetCursorScreenPoint()); |
+} |
+ |
bool SystemTray::CloseBubbleForTest() const { |
if (!bubble_.get()) |
return false; |
@@ -256,14 +265,7 @@ void SystemTray::RemoveBubble(SystemTrayBubble* bubble) { |
if (bubble == bubble_.get()) { |
DestroyBubble(); |
UpdateNotificationBubble(); // State changed, re-create notifications. |
- if (should_show_launcher_) { |
- // No need to show the launcher if the mouse isn't over the status area |
- // anymore. |
- should_show_launcher_ = GetWidget()->GetWindowBoundsInScreen().Contains( |
- gfx::Screen::GetCursorScreenPoint()); |
- if (!should_show_launcher_) |
- Shell::GetInstance()->shelf()->UpdateAutoHideState(); |
- } |
+ UpdateShouldShowLauncher(); |
} else if (bubble == notification_bubble_) { |
notification_bubble_.reset(); |
} else { |
@@ -340,13 +342,9 @@ void SystemTray::ShowItems(const std::vector<SystemTrayItem*>& items, |
else |
detailed_item_ = NULL; |
- // If we have focus the shelf should be visible and we need to continue |
- // showing the shelf when the popup is shown. |
- if (GetWidget()->IsActive()) |
- should_show_launcher_ = true; |
- |
UpdateNotificationBubble(); // State changed, re-create notifications. |
status_area_widget()->HideNonSystemNotifications(); |
+ UpdateShouldShowLauncher(); |
} |
void SystemTray::UpdateNotificationBubble() { |
@@ -447,18 +445,6 @@ bool SystemTray::PerformAction(const ui::Event& event) { |
return true; |
} |
-void SystemTray::OnMouseEntered(const ui::MouseEvent& event) { |
- TrayBackgroundView::OnMouseEntered(event); |
- should_show_launcher_ = true; |
-} |
- |
-void SystemTray::OnMouseExited(const ui::MouseEvent& event) { |
- TrayBackgroundView::OnMouseExited(event); |
- // When the popup closes we'll update |should_show_launcher_|. |
- if (!bubble_.get()) |
- should_show_launcher_ = false; |
-} |
- |
void SystemTray::GetAccessibleState(ui::AccessibleViewState* state) { |
state->role = ui::AccessibilityTypes::ROLE_PUSHBUTTON; |
state->name = l10n_util::GetStringUTF16( |