Chromium Code Reviews| Index: ash/shelf/overflow_bubble.cc | 
| diff --git a/ash/shelf/overflow_bubble.cc b/ash/shelf/overflow_bubble.cc | 
| index 19f460cf5fe298630fbe5eaf71141794f3cb3204..cf3dc33cdfdf63fe4bc40c0ab9e9a8e16c4f6568 100644 | 
| --- a/ash/shelf/overflow_bubble.cc | 
| +++ b/ash/shelf/overflow_bubble.cc | 
| @@ -11,7 +11,6 @@ | 
| #include "ash/shell.h" | 
| #include "ash/system/tray/tray_background_view.h" | 
| #include "ui/aura/client/screen_position_client.h" | 
| -#include "ui/aura/window_event_dispatcher.h" | 
| #include "ui/events/event.h" | 
| #include "ui/views/widget/widget.h" | 
| @@ -35,8 +34,7 @@ void OverflowBubble::Show(views::View* anchor, ShelfView* shelf_view) { | 
| shelf_view_ = shelf_view; | 
| anchor_ = anchor; | 
| - // TODO(jamescook): Change this to a PointerWatcher. | 
| - Shell::GetInstance()->AddPreTargetHandler(this); | 
| + Shell::GetInstance()->AddPointerWatcher(this); | 
| TrayBackgroundView::InitializeBubbleAnimations(bubble_->GetWidget()); | 
| bubble_->GetWidget()->AddObserver(this); | 
| @@ -47,7 +45,7 @@ void OverflowBubble::Hide() { | 
| if (!IsShowing()) | 
| return; | 
| - Shell::GetInstance()->RemovePreTargetHandler(this); | 
| + Shell::GetInstance()->RemovePointerWatcher(this); | 
| bubble_->GetWidget()->RemoveObserver(this); | 
| bubble_->GetWidget()->Close(); | 
| bubble_ = NULL; | 
| @@ -66,11 +64,11 @@ void OverflowBubble::HideBubbleAndRefreshButton() { | 
| anchor->SchedulePaint(); | 
| } | 
| -void OverflowBubble::ProcessPressedEvent(ui::LocatedEvent* event) { | 
| - aura::Window* target = static_cast<aura::Window*>(event->target()); | 
| - gfx::Point event_location_in_screen = event->location(); | 
| - aura::client::GetScreenPositionClient(target->GetRootWindow())-> | 
| - ConvertPointToScreen(target, &event_location_in_screen); | 
| +void OverflowBubble::ProcessPressedEvent(const ui::LocatedEvent& event) { | 
| + aura::Window* root = bubble_->GetWidget()->GetNativeWindow()->GetRootWindow(); | 
| + gfx::Point event_location_in_screen = event.root_location(); | 
| + aura::client::GetScreenPositionClient(root)->ConvertPointToScreen( | 
| 
 
msw
2016/05/02 17:18:13
Will this work? What is the coordinate system used
 
James Cook
2016/05/02 17:48:34
Yes, I think this is wrong for multi-display. Good
 
 | 
| + root, &event_location_in_screen); | 
| if (!shelf_view_->IsShowingMenu() && | 
| !bubble_->GetBoundsInScreen().Contains(event_location_in_screen) && | 
| !anchor_->GetBoundsInScreen().Contains(event_location_in_screen)) { | 
| @@ -78,14 +76,12 @@ void OverflowBubble::ProcessPressedEvent(ui::LocatedEvent* event) { | 
| } | 
| } | 
| -void OverflowBubble::OnMouseEvent(ui::MouseEvent* event) { | 
| - if (event->type() == ui::ET_MOUSE_PRESSED) | 
| - ProcessPressedEvent(event); | 
| +void OverflowBubble::OnMousePressed(const ui::MouseEvent& event) { | 
| + ProcessPressedEvent(event); | 
| } | 
| -void OverflowBubble::OnTouchEvent(ui::TouchEvent* event) { | 
| - if (event->type() == ui::ET_TOUCH_PRESSED) | 
| - ProcessPressedEvent(event); | 
| +void OverflowBubble::OnTouchPressed(const ui::TouchEvent& event) { | 
| + ProcessPressedEvent(event); | 
| } | 
| void OverflowBubble::OnWidgetDestroying(views::Widget* widget) { |