Index: ash/common/shelf/overflow_bubble.cc |
diff --git a/ash/common/shelf/overflow_bubble.cc b/ash/common/shelf/overflow_bubble.cc |
index eadd54e5597a976ef9ffd9c0e75b93b8b63d770e..c8828569e41364d7990c6840e743eca3baeb4c97 100644 |
--- a/ash/common/shelf/overflow_bubble.cc |
+++ b/ash/common/shelf/overflow_bubble.cc |
@@ -5,6 +5,7 @@ |
#include "ash/common/shelf/overflow_bubble.h" |
#include "ash/common/shelf/overflow_bubble_view.h" |
+#include "ash/common/shelf/overflow_button.h" |
#include "ash/common/shelf/wm_shelf.h" |
#include "ash/common/system/tray/tray_background_view.h" |
#include "ash/common/wm_shell.h" |
@@ -17,7 +18,7 @@ namespace ash { |
OverflowBubble::OverflowBubble(WmShelf* wm_shelf) |
: wm_shelf_(wm_shelf), |
bubble_(nullptr), |
- anchor_(nullptr), |
+ button_(nullptr), |
shelf_view_(nullptr) { |
WmShell::Get()->AddPointerDownWatcher(this); |
} |
@@ -27,47 +28,42 @@ OverflowBubble::~OverflowBubble() { |
WmShell::Get()->RemovePointerDownWatcher(this); |
} |
-void OverflowBubble::Show(views::View* anchor, ShelfView* shelf_view) { |
+void OverflowBubble::Show(OverflowButton* button, ShelfView* shelf_view) { |
Hide(); |
bubble_ = new OverflowBubbleView(wm_shelf_); |
- bubble_->InitOverflowBubble(anchor, shelf_view); |
+ bubble_->InitOverflowBubble(button, shelf_view); |
shelf_view_ = shelf_view; |
- anchor_ = anchor; |
+ button_ = button; |
TrayBackgroundView::InitializeBubbleAnimations(bubble_->GetWidget()); |
bubble_->GetWidget()->AddObserver(this); |
bubble_->GetWidget()->Show(); |
+ |
+ button->OnOverflowBubbleShown(); |
} |
void OverflowBubble::Hide() { |
if (!IsShowing()) |
return; |
+ OverflowButton* button = button_; |
+ |
bubble_->GetWidget()->RemoveObserver(this); |
bubble_->GetWidget()->Close(); |
- bubble_ = NULL; |
- anchor_ = NULL; |
- shelf_view_ = NULL; |
-} |
+ bubble_ = nullptr; |
+ button_ = nullptr; |
+ shelf_view_ = nullptr; |
-void OverflowBubble::HideBubbleAndRefreshButton() { |
- if (!IsShowing()) |
- return; |
- |
- views::View* anchor = anchor_; |
- Hide(); |
- // Update overflow button (|anchor|) status when overflow bubble is hidden |
- // by outside event of overflow button. |
- anchor->SchedulePaint(); |
+ button->OnOverflowBubbleHidden(); |
} |
void OverflowBubble::ProcessPressedEvent( |
const gfx::Point& event_location_in_screen) { |
if (IsShowing() && !shelf_view_->IsShowingMenu() && |
!bubble_->GetBoundsInScreen().Contains(event_location_in_screen) && |
- !anchor_->GetBoundsInScreen().Contains(event_location_in_screen)) { |
- HideBubbleAndRefreshButton(); |
+ !button_->GetBoundsInScreen().Contains(event_location_in_screen)) { |
+ Hide(); |
} |
} |
@@ -85,10 +81,10 @@ void OverflowBubble::OnTouchPressed(const ui::TouchEvent& event, |
void OverflowBubble::OnWidgetDestroying(views::Widget* widget) { |
DCHECK(widget == bubble_->GetWidget()); |
- bubble_ = NULL; |
- anchor_ = NULL; |
+ bubble_ = nullptr; |
+ button_ = nullptr; |
wm_shelf_->SchedulePaint(); |
- shelf_view_ = NULL; |
+ shelf_view_ = nullptr; |
} |
} // namespace ash |