Commit 3e14280e authored by Dave Schuyler's avatar Dave Schuyler Committed by Commit Bot

[Omnibox] Updating suggestions on Match or Highlight change.

This CL adds members and update handlers to OmniboxSeparatedLineView.
This code is currently inactive.

Bug: None
Change-Id: I5e601c17eb00e815269c9682a29105164d1f86c4
Reviewed-on: https://chromium-review.googlesource.com/991462Reviewed-by: default avatarTommy Li <tommycli@chromium.org>
Commit-Queue: Dave Schuyler <dschuyler@chromium.org>
Cr-Commit-Position: refs/heads/master@{#547810}
parent d1a894e0
...@@ -95,31 +95,65 @@ int GetIconAlignmentOffset() { ...@@ -95,31 +95,65 @@ int GetIconAlignmentOffset() {
} // namespace } // namespace
////////////////////////////////////////////////////////////////////////////////
// OmniboxImageView:
class OmniboxImageView : public views::ImageView {
public:
bool CanProcessEventsWithinSubtree() const override { return false; }
};
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// OmniboxSeparatedLineView: // OmniboxSeparatedLineView:
class OmniboxSeparatedLineView : public views::View { class OmniboxSeparatedLineView : public views::View {
public: public:
explicit OmniboxSeparatedLineView(OmniboxResultView* result_view); explicit OmniboxSeparatedLineView(OmniboxResultView* result_view,
const gfx::FontList& font_list);
~OmniboxSeparatedLineView() override; ~OmniboxSeparatedLineView() override;
void OnMatchUpdate(const AutocompleteMatch& match);
void OnHighlightUpdate(const AutocompleteMatch& match);
protected: protected:
// views::View: // views::View:
void Layout() override; void Layout() override;
const char* GetClassName() const override; const char* GetClassName() const override;
// Weak pointers for easy reference.
OmniboxResultView* result_view_; OmniboxResultView* result_view_;
views::ImageView* icon_view_; // An icon resembling a '>'.
views::ImageView* image_view_; // For rich suggestions.
OmniboxTextView* content_view_;
OmniboxTextView* description_view_;
OmniboxTextView* separator_view_;
private: private:
DISALLOW_COPY_AND_ASSIGN(OmniboxSeparatedLineView); DISALLOW_COPY_AND_ASSIGN(OmniboxSeparatedLineView);
}; };
OmniboxSeparatedLineView::OmniboxSeparatedLineView( OmniboxSeparatedLineView::OmniboxSeparatedLineView(
OmniboxResultView* result_view) OmniboxResultView* result_view,
: result_view_(result_view) {} const gfx::FontList& font_list)
: result_view_(result_view) {
AddChildView(icon_view_ = new OmniboxImageView());
AddChildView(image_view_ = new OmniboxImageView());
AddChildView(content_view_ = new OmniboxTextView(result_view, font_list));
AddChildView(description_view_ = new OmniboxTextView(result_view, font_list));
AddChildView(separator_view_ = new OmniboxTextView(result_view, font_list));
}
OmniboxSeparatedLineView::~OmniboxSeparatedLineView() = default; OmniboxSeparatedLineView::~OmniboxSeparatedLineView() = default;
void OmniboxSeparatedLineView::OnMatchUpdate(const AutocompleteMatch& match) {
// TODO(dschuyler): Fill this in.
}
void OmniboxSeparatedLineView::OnHighlightUpdate(
const AutocompleteMatch& match) {
// TODO(dschuyler): Fill this in.
}
const char* OmniboxSeparatedLineView::GetClassName() const { const char* OmniboxSeparatedLineView::GetClassName() const {
return "OmniboxSeparatedLineView"; return "OmniboxSeparatedLineView";
} }
...@@ -133,7 +167,8 @@ void OmniboxSeparatedLineView::Layout() { ...@@ -133,7 +167,8 @@ void OmniboxSeparatedLineView::Layout() {
class OmniboxSuggestionView : public OmniboxSeparatedLineView { class OmniboxSuggestionView : public OmniboxSeparatedLineView {
public: public:
explicit OmniboxSuggestionView(OmniboxResultView* result_view); explicit OmniboxSuggestionView(OmniboxResultView* result_view,
const gfx::FontList& font_list);
~OmniboxSuggestionView() override; ~OmniboxSuggestionView() override;
private: private:
...@@ -144,8 +179,10 @@ class OmniboxSuggestionView : public OmniboxSeparatedLineView { ...@@ -144,8 +179,10 @@ class OmniboxSuggestionView : public OmniboxSeparatedLineView {
DISALLOW_COPY_AND_ASSIGN(OmniboxSuggestionView); DISALLOW_COPY_AND_ASSIGN(OmniboxSuggestionView);
}; };
OmniboxSuggestionView::OmniboxSuggestionView(OmniboxResultView* result_view) OmniboxSuggestionView::OmniboxSuggestionView(OmniboxResultView* result_view,
: OmniboxSeparatedLineView::OmniboxSeparatedLineView(result_view) {} const gfx::FontList& font_list)
: OmniboxSeparatedLineView::OmniboxSeparatedLineView(result_view,
font_list) {}
OmniboxSuggestionView::~OmniboxSuggestionView() = default; OmniboxSuggestionView::~OmniboxSuggestionView() = default;
...@@ -157,14 +194,6 @@ void OmniboxSuggestionView::Layout() { ...@@ -157,14 +194,6 @@ void OmniboxSuggestionView::Layout() {
// TODO(dschuyler): Fill this in. // TODO(dschuyler): Fill this in.
} }
////////////////////////////////////////////////////////////////////////////////
// OmniboxImageView:
class OmniboxImageView : public views::ImageView {
public:
bool CanProcessEventsWithinSubtree() const override { return false; }
};
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// OmniboxResultView, public: // OmniboxResultView, public:
...@@ -189,8 +218,8 @@ OmniboxResultView::OmniboxResultView(OmniboxPopupContentsView* model, ...@@ -189,8 +218,8 @@ OmniboxResultView::OmniboxResultView(OmniboxPopupContentsView* model,
keyword_separator_view_(AddOmniboxTextView(font_list)) { keyword_separator_view_(AddOmniboxTextView(font_list)) {
CHECK_GE(model_index, 0); CHECK_GE(model_index, 0);
AddChildView(suggestion_view_ = new OmniboxSuggestionView(this)); AddChildView(suggestion_view_ = new OmniboxSuggestionView(this, font_list));
AddChildView(keyword_view_ = new OmniboxSeparatedLineView(this)); AddChildView(keyword_view_ = new OmniboxSeparatedLineView(this, font_list));
keyword_icon_view_->EnableCanvasFlippingForRTLUI(true); keyword_icon_view_->EnableCanvasFlippingForRTLUI(true);
keyword_icon_view_->SetImage(gfx::CreateVectorIcon( keyword_icon_view_->SetImage(gfx::CreateVectorIcon(
...@@ -215,6 +244,9 @@ void OmniboxResultView::SetMatch(const AutocompleteMatch& match) { ...@@ -215,6 +244,9 @@ void OmniboxResultView::SetMatch(const AutocompleteMatch& match) {
match_ = match.GetMatchWithContentsAndDescriptionPossiblySwapped(); match_ = match.GetMatchWithContentsAndDescriptionPossiblySwapped();
animation_->Reset(); animation_->Reset();
is_hovered_ = false; is_hovered_ = false;
suggestion_view_->OnMatchUpdate(match_);
keyword_view_->OnMatchUpdate(match_);
suggestion_image_view_->SetVisible(false); // Until SetAnswerImage is called. suggestion_image_view_->SetVisible(false); // Until SetAnswerImage is called.
keyword_icon_view_->SetVisible(match_.associated_keyword.get()); keyword_icon_view_->SetVisible(match_.associated_keyword.get());
if (suggestion_tab_switch_button_) { if (suggestion_tab_switch_button_) {
...@@ -227,7 +259,6 @@ void OmniboxResultView::SetMatch(const AutocompleteMatch& match) { ...@@ -227,7 +259,6 @@ void OmniboxResultView::SetMatch(const AutocompleteMatch& match) {
RemoveChildView(suggestion_tab_switch_button_.get()); RemoveChildView(suggestion_tab_switch_button_.get());
} }
} }
Invalidate(); Invalidate();
if (GetWidget()) if (GetWidget())
Layout(); Layout();
...@@ -250,6 +281,9 @@ void OmniboxResultView::Invalidate() { ...@@ -250,6 +281,9 @@ void OmniboxResultView::Invalidate() {
SetBackground(CreateBackgroundWithColor(color)); SetBackground(CreateBackgroundWithColor(color));
} }
suggestion_view_->OnHighlightUpdate(match_);
keyword_view_->OnHighlightUpdate(match_);
// Recreate the icons in case the color needs to change. // Recreate the icons in case the color needs to change.
// Note: if this is an extension icon or favicon then this can be done in // Note: if this is an extension icon or favicon then this can be done in
// SetMatch() once (rather than repeatedly, as happens here). There may // SetMatch() once (rather than repeatedly, as happens here). There may
......
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