Commit 54e8ca06 authored by Robert Liao's avatar Robert Liao Committed by Commit Bot

Invalidate Preferred Size On Combobox SizeToLargestLabel Changed

PermissionCombobox used ModelChanged() incorrectly to propagate a
change to the SizeToLargestLabel property. The real fix updates
Combobox to correctly invalidate the preferred size on such a
change and updates the method name in PermissionCombobox.

Fixed: 1116750
Change-Id: I5bc8f3efe292e94cbfc1c94a2a5149b8b1514da4
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2388889
Commit-Queue: Robert Liao <robliao@chromium.org>
Commit-Queue: Emily Stark <estark@chromium.org>
Reviewed-by: default avatarAllen Bauer <kylixrd@chromium.org>
Reviewed-by: default avatarEmily Stark <estark@chromium.org>
Auto-Submit: Robert Liao <robliao@chromium.org>
Cr-Commit-Position: refs/heads/master@{#803664}
parent 485a081d
...@@ -127,7 +127,7 @@ PermissionCombobox::PermissionCombobox(ComboboxModelAdapter* model, ...@@ -127,7 +127,7 @@ PermissionCombobox::PermissionCombobox(ComboboxModelAdapter* model,
set_listener(this); set_listener(this);
SetEnabled(enabled); SetEnabled(enabled);
UpdateSelectedIndex(use_default); UpdateSelectedIndex(use_default);
set_size_to_largest_label(false); SetSizeToLargestLabel(false);
} }
PermissionCombobox::~PermissionCombobox() {} PermissionCombobox::~PermissionCombobox() {}
......
...@@ -348,6 +348,15 @@ void Combobox::SetInvalid(bool invalid) { ...@@ -348,6 +348,15 @@ void Combobox::SetInvalid(bool invalid) {
OnPropertyChanged(&selected_index_, kPropertyEffectsPaint); OnPropertyChanged(&selected_index_, kPropertyEffectsPaint);
} }
void Combobox::SetSizeToLargestLabel(bool size_to_largest_label) {
if (size_to_largest_label_ == size_to_largest_label)
return;
size_to_largest_label_ = size_to_largest_label;
content_size_ = GetContentSize();
OnPropertyChanged(&selected_index_, kPropertyEffectsPreferredSizeChanged);
}
void Combobox::OnThemeChanged() { void Combobox::OnThemeChanged() {
View::OnThemeChanged(); View::OnThemeChanged();
SetBackground( SetBackground(
...@@ -708,6 +717,7 @@ PrefixSelector* Combobox::GetPrefixSelector() { ...@@ -708,6 +717,7 @@ PrefixSelector* Combobox::GetPrefixSelector() {
BEGIN_METADATA(Combobox, View) BEGIN_METADATA(Combobox, View)
ADD_PROPERTY_METADATA(int, SelectedIndex) ADD_PROPERTY_METADATA(int, SelectedIndex)
ADD_PROPERTY_METADATA(bool, Invalid) ADD_PROPERTY_METADATA(bool, Invalid)
ADD_PROPERTY_METADATA(bool, SizeToLargestLabel)
ADD_PROPERTY_METADATA(base::string16, AccessibleName) ADD_PROPERTY_METADATA(base::string16, AccessibleName)
END_METADATA END_METADATA
......
...@@ -92,6 +92,10 @@ class VIEWS_EXPORT Combobox : public View, ...@@ -92,6 +92,10 @@ class VIEWS_EXPORT Combobox : public View,
void SetInvalid(bool invalid); void SetInvalid(bool invalid);
bool GetInvalid() const { return invalid_; } bool GetInvalid() const { return invalid_; }
// Whether the combobox should use the largest label as the content size.
void SetSizeToLargestLabel(bool size_to_largest_label);
bool GetSizeToLargestLabel() const { return size_to_largest_label_; }
// Overridden from View: // Overridden from View:
gfx::Size CalculatePreferredSize() const override; gfx::Size CalculatePreferredSize() const override;
void OnBoundsChanged(const gfx::Rect& previous_bounds) override; void OnBoundsChanged(const gfx::Rect& previous_bounds) override;
...@@ -114,10 +118,6 @@ class VIEWS_EXPORT Combobox : public View, ...@@ -114,10 +118,6 @@ class VIEWS_EXPORT Combobox : public View,
void ButtonPressed(Button* sender, const ui::Event& event) override; void ButtonPressed(Button* sender, const ui::Event& event) override;
protected: protected:
void set_size_to_largest_label(bool size_to_largest_label) {
size_to_largest_label_ = size_to_largest_label;
}
// Overridden from ComboboxModelObserver: // Overridden from ComboboxModelObserver:
void OnComboboxModelChanged(ui::ComboboxModel* model) override; void OnComboboxModelChanged(ui::ComboboxModel* model) 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