summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien Zammit <damien@zamaudio.com>2018-09-28 13:01:17 +1000
committerFilipe Coelho <falktx@falktx.com>2018-09-28 05:20:09 +0200
commit6d35b690e5399ceaf52b42443b0b3a94587122ac (patch)
treecca957f8a8185713eba95bab5aee7b0c00457f1c
parentea7545a13ab9793b5608b13a82f1ad9cf9ec5e98 (diff)
Add ability to shift-click to reset sliders.
Fixes #69
-rw-r--r--dgl/ImageWidgets.hpp3
-rw-r--r--dgl/src/ImageWidgets.cpp17
2 files changed, 20 insertions, 0 deletions
diff --git a/dgl/ImageWidgets.hpp b/dgl/ImageWidgets.hpp
index aafe1962..e5a21420 100644
--- a/dgl/ImageWidgets.hpp
+++ b/dgl/ImageWidgets.hpp
@@ -180,6 +180,7 @@ public:
float getValue() const noexcept;
void setValue(float value, bool sendCallback = false) noexcept;
+ void setDefault(float def) noexcept;
void setStartPos(const Point<int>& startPos) noexcept;
void setStartPos(int x, int y) noexcept;
@@ -203,7 +204,9 @@ private:
float fMaximum;
float fStep;
float fValue;
+ float fValueDef;
float fValueTmp;
+ bool fUsingDefault;
bool fDragging;
bool fInverted;
diff --git a/dgl/src/ImageWidgets.cpp b/dgl/src/ImageWidgets.cpp
index 9b4625c1..12f952e7 100644
--- a/dgl/src/ImageWidgets.cpp
+++ b/dgl/src/ImageWidgets.cpp
@@ -649,7 +649,9 @@ ImageSlider::ImageSlider(Window& parent, const Image& image) noexcept
fMaximum(1.0f),
fStep(0.0f),
fValue(0.5f),
+ fValueDef(fValue),
fValueTmp(fValue),
+ fUsingDefault(false),
fDragging(false),
fInverted(false),
fValueIsSet(false),
@@ -670,7 +672,9 @@ ImageSlider::ImageSlider(Widget* widget, const Image& image) noexcept
fMaximum(1.0f),
fStep(0.0f),
fValue(0.5f),
+ fValueDef(fValue),
fValueTmp(fValue),
+ fUsingDefault(false),
fDragging(false),
fInverted(false),
fValueIsSet(false),
@@ -743,6 +747,12 @@ void ImageSlider::setInverted(bool inverted) noexcept
repaint();
}
+void ImageSlider::setDefault(float value) noexcept
+{
+ fValueDef = value;
+ fUsingDefault = true;
+}
+
void ImageSlider::setRange(float min, float max) noexcept
{
fMinimum = min;
@@ -830,6 +840,13 @@ bool ImageSlider::onMouse(const MouseEvent& ev)
if (! fSliderArea.contains(ev.pos))
return false;
+ if ((ev.mod & kModifierShift) != 0 && fUsingDefault)
+ {
+ setValue(fValueDef, true);
+ fValueTmp = fValue;
+ return true;
+ }
+
float vper;
const int x = ev.pos.getX();
const int y = ev.pos.getY();