diff options
author | Damien Zammit <damien@zamaudio.com> | 2018-09-28 13:01:17 +1000 |
---|---|---|
committer | Filipe Coelho <falktx@falktx.com> | 2018-09-28 05:20:09 +0200 |
commit | 6d35b690e5399ceaf52b42443b0b3a94587122ac (patch) | |
tree | cca957f8a8185713eba95bab5aee7b0c00457f1c | |
parent | ea7545a13ab9793b5608b13a82f1ad9cf9ec5e98 (diff) |
Add ability to shift-click to reset sliders.
Fixes #69
-rw-r--r-- | dgl/ImageWidgets.hpp | 3 | ||||
-rw-r--r-- | dgl/src/ImageWidgets.cpp | 17 |
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(); |