diff options
author | sadrul@chromium.org <sadrul@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-02-29 17:57:35 +0000 |
---|---|---|
committer | sadrul@chromium.org <sadrul@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-02-29 17:57:35 +0000 |
commit | d97f67463aae85b270fa522502df8bc5cb2a24e4 (patch) | |
tree | ae2a26ab1b9d3bc3e1be755cfe2f8ebfdd06781d /ui/views | |
parent | a9d401ce6a70b374233763c361d51b9945fdf20f (diff) | |
download | chromium_src-d97f67463aae85b270fa522502df8bc5cb2a24e4.zip chromium_src-d97f67463aae85b270fa522502df8bc5cb2a24e4.tar.gz chromium_src-d97f67463aae85b270fa522502df8bc5cb2a24e4.tar.bz2 |
views: Tell SliderListener's how the slider value was changed.
BUG=none
TEST=none
Review URL: https://chromiumcodereview.appspot.com/9533013
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@124199 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui/views')
-rw-r--r-- | ui/views/controls/slider.cc | 12 | ||||
-rw-r--r-- | ui/views/controls/slider.h | 10 | ||||
-rw-r--r-- | ui/views/examples/slider_example.cc | 3 | ||||
-rw-r--r-- | ui/views/examples/slider_example.h | 3 |
4 files changed, 22 insertions, 6 deletions
diff --git a/ui/views/controls/slider.cc b/ui/views/controls/slider.cc index 533064d..6654bf3 100644 --- a/ui/views/controls/slider.cc +++ b/ui/views/controls/slider.cc @@ -25,6 +25,10 @@ Slider::~Slider() { } void Slider::SetValue(float value) { + SetValueInternal(value, VALUE_CHANGED_BY_API); +} + +void Slider::SetValueInternal(float value, SliderChangeReason reason) { if (value < 0.0) value = 0.0; else if (value > 1.0) @@ -34,7 +38,7 @@ void Slider::SetValue(float value) { float old_value = value_; value_ = value; if (listener_) - listener_->SliderValueChanged(this, value_, old_value); + listener_->SliderValueChanged(this, value_, old_value, reason); SchedulePaint(); } @@ -107,9 +111,11 @@ bool Slider::OnMouseDragged(const views::MouseEvent& event) { if (orientation_ == HORIZONTAL) { int amount = base::i18n::IsRTL() ? width() - inset.left() - event.x() : event.x() - inset.left(); - SetValue(static_cast<float>(amount) / (width() - inset.width())); + SetValueInternal(static_cast<float>(amount) / (width() - inset.width()), + VALUE_CHANGED_BY_USER); } else { - SetValue(1.0f - static_cast<float>(event.y()) / height()); + SetValueInternal(1.0f - static_cast<float>(event.y()) / height(), + VALUE_CHANGED_BY_USER); } return true; } diff --git a/ui/views/controls/slider.h b/ui/views/controls/slider.h index c70147d..a6d40c5 100644 --- a/ui/views/controls/slider.h +++ b/ui/views/controls/slider.h @@ -13,11 +13,17 @@ namespace views { class Slider; +enum SliderChangeReason { + VALUE_CHANGED_BY_USER, // value was changed by the user (by clicking, e.g.) + VALUE_CHANGED_BY_API, // value was changed by a call to SetValue. +}; + class VIEWS_EXPORT SliderListener { public: virtual void SliderValueChanged(Slider* sender, float value, - float old_value) = 0; + float old_value, + SliderChangeReason reason) = 0; protected: virtual ~SliderListener() {} @@ -37,6 +43,8 @@ class VIEWS_EXPORT Slider : public View { void SetValue(float value); private: + void SetValueInternal(float value, SliderChangeReason reason); + // views::View overrides: virtual gfx::Size GetPreferredSize() OVERRIDE; virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE; diff --git a/ui/views/examples/slider_example.cc b/ui/views/examples/slider_example.cc index a1ab11e..e7d90a5 100644 --- a/ui/views/examples/slider_example.cc +++ b/ui/views/examples/slider_example.cc @@ -35,7 +35,8 @@ void SliderExample::CreateExampleView(View* container) { void SliderExample::SliderValueChanged(Slider* sender, float value, - float old_value) { + float old_value, + views::SliderChangeReason reason) { label_->SetText(ASCIIToUTF16(base::StringPrintf("%.3lf", value))); } diff --git a/ui/views/examples/slider_example.h b/ui/views/examples/slider_example.h index a94a00c..33edcdd 100644 --- a/ui/views/examples/slider_example.h +++ b/ui/views/examples/slider_example.h @@ -28,7 +28,8 @@ class SliderExample : public ExampleBase, public SliderListener { // Overridden from SliderListener: virtual void SliderValueChanged(Slider* sender, float value, - float old_value) OVERRIDE; + float old_value, + views::SliderChangeReason reason) OVERRIDE; Slider* slider_; Label* label_; |