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 { |
tapted
2015/02/03 23:56:31
this needs to be in USE_AURA as well. And wm::Mask
calamity
2015/02/04 03:37:01
Done.
|
+ public: |
+ SearchBoxWindowTargeter(aura::Window* window, views::View* content_view) |
+ : wm::MaskedWindowTargeter(window), content_view_(content_view) {} |
tapted
2015/02/03 23:56:31
nit: can you pass content_view->GetWidget()->GetNa
calamity
2015/02/04 03:37:01
Done.
|
+ ~SearchBoxWindowTargeter() override {} |
+ |
+ private: |
+ // wm::MaskedWindowTargeter: |
+ bool GetHitTestMask(aura::Window* window, gfx::Path* mask) const override { |
+ mask->addRect(gfx::RectToSkRect(content_view_->ConvertRectToWidget( |
tapted
2015/02/03 23:56:31
Q: Is the ConvertRectToWidget bit needed (I only a
calamity
2015/02/04 03:37:01
Yeah, it can be removed.
|
+ 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) |
Matt Giuca
2015/02/03 07:29:23
Adding Trent to get opinion about this (as the res
|
+ // 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(); |
} |