summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ash/system/audio/tray_volume.cc5
-rw-r--r--ash/system/brightness/tray_brightness.cc5
-rw-r--r--ui/views/controls/slider.cc12
-rw-r--r--ui/views/controls/slider.h10
-rw-r--r--ui/views/examples/slider_example.cc3
-rw-r--r--ui/views/examples/slider_example.h3
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_;