Commit 76748b2c authored by Dave Schuyler's avatar Dave Schuyler Committed by Commit Bot

[Omnibox] fix hover over text and images.

This CL uses CanProcessEventsWithinSubtree to stop enter/exit events to
text and image elements.

Bug: 820892
Change-Id: Ice5adc61ba617db3119eea9a99d10255888aa840
Reviewed-on: https://chromium-review.googlesource.com/962665Reviewed-by: default avatarJustin Donnelly <jdonnelly@chromium.org>
Reviewed-by: default avatarKevin Bailey <krb@chromium.org>
Commit-Queue: Dave Schuyler <dschuyler@chromium.org>
Cr-Commit-Position: refs/heads/master@{#543456}
parent 96ddff8e
...@@ -126,6 +126,14 @@ int GetIconAlignmentOffset() { ...@@ -126,6 +126,14 @@ int GetIconAlignmentOffset() {
} // namespace } // namespace
////////////////////////////////////////////////////////////////////////////////
// OmniboxResultView:
class OmniboxImageView : public views::ImageView {
public:
bool CanProcessEventsWithinSubtree() const override { return false; }
};
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// OmniboxResultView, public: // OmniboxResultView, public:
...@@ -139,9 +147,9 @@ OmniboxResultView::OmniboxResultView(OmniboxPopupContentsView* model, ...@@ -139,9 +147,9 @@ OmniboxResultView::OmniboxResultView(OmniboxPopupContentsView* model,
font_list.GetHeight(), font_list.GetHeight(),
font_list.DeriveWithWeight(gfx::Font::Weight::BOLD).GetHeight())), font_list.DeriveWithWeight(gfx::Font::Weight::BOLD).GetHeight())),
animation_(new gfx::SlideAnimation(this)), animation_(new gfx::SlideAnimation(this)),
icon_view_(AddImageView()), icon_view_(AddOmniboxImageView()),
image_view_(AddImageView()), image_view_(AddOmniboxImageView()),
keyword_icon_view_(AddImageView()), keyword_icon_view_(AddOmniboxImageView()),
content_view_(AddOmniboxTextView(font_list)), content_view_(AddOmniboxTextView(font_list)),
description_view_(AddOmniboxTextView(font_list)), description_view_(AddOmniboxTextView(font_list)),
keyword_content_view_(AddOmniboxTextView(font_list)), keyword_content_view_(AddOmniboxTextView(font_list)),
...@@ -183,7 +191,6 @@ void OmniboxResultView::SetMatch(const AutocompleteMatch& match) { ...@@ -183,7 +191,6 @@ void OmniboxResultView::SetMatch(const AutocompleteMatch& match) {
match_ = match.GetMatchWithContentsAndDescriptionPossiblySwapped(); match_ = match.GetMatchWithContentsAndDescriptionPossiblySwapped();
animation_->Reset(); animation_->Reset();
is_hovered_ = false; is_hovered_ = false;
icon_view_->SetImage(GetIcon().ToImageSkia());
image_view_->SetVisible(false); // Until SetAnswerImage is called. image_view_->SetVisible(false); // Until SetAnswerImage is called.
keyword_icon_view_->SetVisible(match_.associated_keyword.get()); keyword_icon_view_->SetVisible(match_.associated_keyword.get());
...@@ -390,8 +397,8 @@ void OmniboxResultView::OnNativeThemeChanged(const ui::NativeTheme* theme) { ...@@ -390,8 +397,8 @@ void OmniboxResultView::OnNativeThemeChanged(const ui::NativeTheme* theme) {
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// OmniboxResultView, private: // OmniboxResultView, private:
views::ImageView* OmniboxResultView::AddImageView() { OmniboxImageView* OmniboxResultView::AddOmniboxImageView() {
views::ImageView* view = new views::ImageView(); OmniboxImageView* view = new OmniboxImageView();
AddChildView(view); AddChildView(view);
return view; return view;
} }
......
...@@ -29,6 +29,7 @@ namespace gfx { ...@@ -29,6 +29,7 @@ namespace gfx {
class Image; class Image;
} }
class OmniboxImageView;
class OmniboxTabSwitchButton; class OmniboxTabSwitchButton;
class OmniboxTextView; class OmniboxTextView;
...@@ -97,7 +98,7 @@ class OmniboxResultView : public views::View, ...@@ -97,7 +98,7 @@ class OmniboxResultView : public views::View,
private: private:
// Create instance and add it as a child. // Create instance and add it as a child.
views::ImageView* AddImageView(); OmniboxImageView* AddOmniboxImageView();
OmniboxTextView* AddOmniboxTextView(const gfx::FontList& font_list); OmniboxTextView* AddOmniboxTextView(const gfx::FontList& font_list);
// Returns the height of the text portion of the result view. // Returns the height of the text portion of the result view.
......
...@@ -121,6 +121,10 @@ gfx::Size OmniboxTextView::CalculatePreferredSize() const { ...@@ -121,6 +121,10 @@ gfx::Size OmniboxTextView::CalculatePreferredSize() const {
return render_text_->GetStringSize(); return render_text_->GetStringSize();
} }
bool OmniboxTextView::CanProcessEventsWithinSubtree() const {
return false;
}
const char* OmniboxTextView::GetClassName() const { const char* OmniboxTextView::GetClassName() const {
return "OmniboxTextView"; return "OmniboxTextView";
} }
......
...@@ -32,6 +32,7 @@ class OmniboxTextView : public views::View { ...@@ -32,6 +32,7 @@ class OmniboxTextView : public views::View {
// views::View. // views::View.
gfx::Size CalculatePreferredSize() const override; gfx::Size CalculatePreferredSize() const override;
bool CanProcessEventsWithinSubtree() const override;
const char* GetClassName() const override; const char* GetClassName() const override;
int GetHeightForWidth(int width) const override; int GetHeightForWidth(int width) const override;
void OnPaint(gfx::Canvas* canvas) override; void OnPaint(gfx::Canvas* canvas) override;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment