diff options
-rw-r--r-- | ash/system/audio/tray_volume.cc | 5 | ||||
-rw-r--r-- | ash/system/brightness/tray_brightness.cc | 5 | ||||
-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 |
6 files changed, 30 insertions, 8 deletions
diff --git a/ash/system/audio/tray_volume.cc b/ash/system/audio/tray_volume.cc index 9d4791a..dbc5b41 100644 --- a/ash/system/audio/tray_volume.cc +++ b/ash/system/audio/tray_volume.cc @@ -73,7 +73,10 @@ class VolumeView : public views::View, // Overridden from views:SliderListener. virtual void SliderValueChanged(views::Slider* sender, float value, - float old_value) OVERRIDE { + float old_value, + views::SliderChangeReason reason) OVERRIDE { + if (reason != views::VALUE_CHANGED_BY_USER) + return; ash::Shell::GetInstance()->tray_delegate()->SetVolumeLevel(value); } diff --git a/ash/system/brightness/tray_brightness.cc b/ash/system/brightness/tray_brightness.cc index 12e4e72..1555d49 100644 --- a/ash/system/brightness/tray_brightness.cc +++ b/ash/system/brightness/tray_brightness.cc @@ -52,7 +52,10 @@ class BrightnessView : public views::View, // Overridden from views:SliderListener. virtual void SliderValueChanged(views::Slider* sender, float value, - float old_value) OVERRIDE { + float old_value, + views::SliderChangeReason reason) OVERRIDE { + if (reason != views::VALUE_CHANGED_BY_USER) + return; // TODO(sad|davemoore): This isn't correct, since we are unable to pass on // the amount the brightness should be increased/decreased. // http://crosbug.com/26935 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_; |