| 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 e2d3e095d7634c6cfb9b4c98a322f152a5cf627c..cd773783d964157a154f05d0673b0932747ab627 100644
|
| --- a/ui/app_list/views/app_list_view.cc
|
| +++ b/ui/app_list/views/app_list_view.cc
|
| @@ -109,6 +109,27 @@ class AppListOverlayView : public views::View {
|
| DISALLOW_COPY_AND_ASSIGN(AppListOverlayView);
|
| };
|
|
|
| +// An event targeter for the search box widget which will ignore events that
|
| +// are on the search box's shadow.
|
| +class SearchBoxWindowTargeter : public wm::MaskedWindowTargeter {
|
| + public:
|
| + SearchBoxWindowTargeter(aura::Window* window, views::View* content_view)
|
| + : wm::MaskedWindowTargeter(window), content_view_(content_view) {}
|
| + ~SearchBoxWindowTargeter() override {}
|
| +
|
| + private:
|
| + // wm::MaskedWindowTargeter:
|
| + bool GetHitTestMask(aura::Window* window, gfx::Path* mask) const override {
|
| + mask->addRect(gfx::RectToSkRect(content_view_->ConvertRectToWidget(
|
| + content_view_->GetContentsBounds())));
|
| + return true;
|
| + }
|
| +
|
| + views::View* content_view_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(SearchBoxWindowTargeter);
|
| +};
|
| +
|
| } // namespace
|
|
|
| // An animation observer to hide the view at the end of the animation.
|
| @@ -426,6 +447,13 @@ void AppListView::InitChildWidgets() {
|
| search_box_widget_->Init(search_box_widget_params);
|
| search_box_widget_->SetContentsView(search_box_view_);
|
|
|
| +#if defined(USE_AURA)
|
| + // Mouse events on the search box shadow should not be captured.
|
| + aura::Window* window = search_box_widget_->GetNativeWindow();
|
| + window->SetEventTargeter(scoped_ptr<ui::EventTargeter>(
|
| + new SearchBoxWindowTargeter(window, search_box_view_)));
|
| +#endif
|
| +
|
| app_list_main_view_->contents_view()->Layout();
|
| }
|
|
|
|
|