| 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
|
|
|