Index: ui/views/controls/menu/submenu_view.cc |
diff --git a/ui/views/controls/menu/submenu_view.cc b/ui/views/controls/menu/submenu_view.cc |
index b0648820cb3c3911908a2f20a31103ab97d7a84e..5c9f0c96f077183b110ebedead074c0dfe4b71d3 100644 |
--- a/ui/views/controls/menu/submenu_view.cc |
+++ b/ui/views/controls/menu/submenu_view.cc |
@@ -43,7 +43,8 @@ SubmenuView::SubmenuView(MenuItemView* parent) |
minimum_preferred_width_(0), |
resize_open_menu_(false), |
scroll_animator_(new ScrollAnimator(this)), |
- roundoff_error_(0) { |
+ roundoff_error_(0), |
+ prefix_selector_(this) { |
DCHECK(parent); |
// We'll delete ourselves, otherwise the ScrollView would delete us on close. |
set_owned_by_client(); |
@@ -171,6 +172,10 @@ void SubmenuView::GetAccessibleState(ui::AccessibleViewState* state) { |
state->role = ui::AccessibilityTypes::ROLE_MENUPOPUP; |
} |
+ui::TextInputClient* SubmenuView::GetTextInputClient() { |
+ return &prefix_selector_; |
+} |
+ |
void SubmenuView::PaintChildren(gfx::Canvas* canvas) { |
View::PaintChildren(canvas); |
@@ -295,6 +300,35 @@ void SubmenuView::OnGestureEvent(ui::GestureEvent* event) { |
event->SetHandled(); |
} |
+int SubmenuView::GetRowCount() { |
+ return GetMenuItemCount(); |
+} |
+ |
+int SubmenuView::GetSelectedRow() { |
+ int row = 0; |
+ for (int i = 0; i < child_count(); ++i) { |
+ if (child_at(i)->id() != MenuItemView::kMenuItemViewID) |
+ continue; |
+ |
+ if (static_cast<MenuItemView*>(child_at(i))->IsSelected()) |
+ return row; |
+ |
+ row++; |
+ } |
+ |
+ return -1; |
+} |
+ |
+void SubmenuView::SetSelectedRow(int row) { |
+ GetMenuItem()->GetMenuController()->SetSelection( |
+ GetMenuItemAt(row), |
+ MenuController::SELECTION_DEFAULT); |
+} |
+ |
+base::string16 SubmenuView::GetTextForRow(int row) { |
+ return GetMenuItemAt(row)->title(); |
+} |
+ |
bool SubmenuView::IsShowing() { |
return host_ && host_->IsMenuHostVisible(); |
} |