Chromium Code Reviews| 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(); |