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 604187bd36cc11a0a7e4532377ffc260530de901..49855265a72c2f7ab5e29907982020fe01e4cc02 100644 |
--- a/ui/views/controls/menu/menu_runner.cc |
+++ b/ui/views/controls/menu/menu_runner.cc |
@@ -341,17 +341,36 @@ MenuRunner::RunResult MenuRunner::RunMenuAt(Widget* parent, |
display_change_listener_.reset( |
internal::DisplayChangeListener::Create(parent, this)); |
} |
- if ((types & MenuRunner::CONTEXT_MENU) && |
- parent && |
- !MenuItemView::IsBubble(anchor)) { |
- const ui::Event* current_event = parent->GetCurrentEvent(); |
- anchor = current_event && current_event->IsMouseEvent() ? |
- MenuItemView::TOPLEFT : MenuItemView::BOTTOMCENTER; |
- } |
return holder_->RunMenuAt(parent, button, bounds, anchor, types); |
} |
+MenuRunner::RunResult MenuRunner::RunContextMenuAt( |
+ Widget* parent, |
+ MenuButton* button, |
+ const gfx::Rect& bounds, |
+ ui::ContextMenuSourceType source_type, |
+ int32 types) { |
+ MenuItemView::AnchorPosition anchor = MenuItemView::TOPLEFT; |
+ switch (source_type) { |
+ case ui::CONTEXT_MENU_SOURCE_KEYBOARD: |
+ break; |
+ case ui::CONTEXT_MENU_SOURCE_MOUSE: |
+ break; |
+ case ui::CONTEXT_MENU_SOURCE_TOUCH: |
+ anchor = MenuItemView::BOTTOMCENTER; |
+ break; |
+ case ui::CONTEXT_MENU_SOURCE_TOUCH_EDITING: |
+ anchor = MenuItemView::BOTTOMCENTER; |
+ break; |
+ default: |
+ break; |
+ } |
+ types |= views::MenuRunner::CONTEXT_MENU; |
+ return RunMenuAt(parent, button, bounds, anchor, types); |
+} |
+ |
+ |
bool MenuRunner::IsRunning() const { |
return holder_->running(); |
} |