| Index: ui/views/controls/menu/menu_runner.cc
|
| diff --git a/ui/views/controls/menu/menu_runner.cc b/ui/views/controls/menu/menu_runner.cc
|
| index 1e8256e941e8b6c1b08ffd7f51e309cbee35b624..3d19c4e77101807cc8f351a53df3134f1e3bdade 100644
|
| --- a/ui/views/controls/menu/menu_runner.cc
|
| +++ b/ui/views/controls/menu/menu_runner.cc
|
| @@ -333,6 +333,7 @@ MenuRunner::RunResult MenuRunner::RunMenuAt(Widget* parent,
|
| MenuButton* button,
|
| const gfx::Rect& bounds,
|
| MenuItemView::AnchorPosition anchor,
|
| + ui::MenuSourceType source_type,
|
| int32 types) {
|
| // The parent of the nested menu will have created a DisplayChangeListener, so
|
| // we avoid creating a DisplayChangeListener if nested. Drop menus are
|
| @@ -341,12 +342,22 @@ MenuRunner::RunResult MenuRunner::RunMenuAt(Widget* parent,
|
| display_change_listener_.reset(
|
| internal::DisplayChangeListener::Create(parent, this));
|
| }
|
| - if ((types & MenuRunner::CONTEXT_MENU) &&
|
| - parent &&
|
| - parent->GetCurrentEvent() &&
|
| - !MenuItemView::IsBubble(anchor))
|
| - anchor = parent->GetCurrentEvent()->IsGestureEvent() ?
|
| - MenuItemView::BOTTOMCENTER : MenuItemView::TOPLEFT;
|
| +
|
| + if (types & CONTEXT_MENU) {
|
| + switch (source_type) {
|
| + case ui::MENU_SOURCE_NONE:
|
| + case ui::MENU_SOURCE_KEYBOARD:
|
| + case ui::MENU_SOURCE_MOUSE:
|
| + anchor = MenuItemView::TOPLEFT;
|
| + break;
|
| + case ui::MENU_SOURCE_TOUCH:
|
| + case ui::MENU_SOURCE_TOUCH_EDIT_MENU:
|
| + anchor = MenuItemView::BOTTOMCENTER;
|
| + break;
|
| + default:
|
| + break;
|
| + }
|
| + }
|
|
|
| return holder_->RunMenuAt(parent, button, bounds, anchor, types);
|
| }
|
|
|