Index: ui/app_list/views/app_list_view.cc |
diff --git a/ui/app_list/views/app_list_view.cc b/ui/app_list/views/app_list_view.cc |
index c1bdb1edb175a75e3b73c46b380c1638611d966b..963ce0cd2582325a106bacad41d558d07347d0c9 100644 |
--- a/ui/app_list/views/app_list_view.cc |
+++ b/ui/app_list/views/app_list_view.cc |
@@ -83,6 +83,25 @@ bool SupportsShadow() { |
return true; |
} |
+// This view forwards the focus to the search box widget by providing its |
Matt Giuca
2015/02/27 06:29:38
"its" -> "it as a"
calamity
2015/03/02 03:34:53
Done.
|
+// FocusTraversable when a focus search is provided. |
+class SearchBoxFocusHost : public views::View { |
+ public: |
+ explicit SearchBoxFocusHost(views::Widget* search_box_widget) |
+ : search_box_widget_(search_box_widget) {} |
+ |
+ ~SearchBoxFocusHost() override {} |
+ |
+ views::FocusTraversable* GetFocusTraversable() override { |
+ return search_box_widget_; |
+ } |
+ |
+ private: |
+ views::Widget* search_box_widget_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(SearchBoxFocusHost); |
+}; |
+ |
// The view for the App List overlay, which appears as a white rounded |
// rectangle with the given radius. |
class AppListOverlayView : public views::View { |
@@ -182,6 +201,7 @@ AppListView::AppListView(AppListViewDelegate* delegate) |
: delegate_(delegate), |
app_list_main_view_(nullptr), |
speech_view_(nullptr), |
+ search_box_focus_host_(nullptr), |
search_box_widget_(nullptr), |
search_box_view_(nullptr), |
overlay_view_(nullptr), |
@@ -463,6 +483,13 @@ void AppListView::InitChildWidgets() { |
search_box_widget_->Init(search_box_widget_params); |
search_box_widget_->SetContentsView(search_box_view_); |
+ // Set up search box widget focus. |
Matt Giuca
2015/02/27 06:29:38
// The search box will not naturally receive focus
calamity
2015/03/02 03:34:53
Reworded the end of the sentence since the SBFH ne
|
+ search_box_focus_host_ = new SearchBoxFocusHost(search_box_widget_); |
+ AddChildView(search_box_focus_host_); |
+ search_box_widget_->SetFocusTraversableParentView(search_box_focus_host_); |
+ search_box_widget_->SetFocusTraversableParent( |
+ GetWidget()->GetFocusTraversable()); |
+ |
#if defined(USE_AURA) |
// Mouse events on the search box shadow should not be captured. |
aura::Window* window = search_box_widget_->GetNativeWindow(); |