Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(129)

Unified Diff: ui/views/controls/menu/submenu_view.cc

Issue 167643003: Support prefix typing in Combobox while menu is open (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: retry upload Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/views/controls/menu/submenu_view.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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();
}
« no previous file with comments | « ui/views/controls/menu/submenu_view.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698