Browse Source

Add ability to shift-click to reset sliders.

Fixes #69
pull/73/head
Damien Zammit Filipe Coelho <falktx@falktx.com> 6 years ago
parent
commit
6d35b690e5
2 changed files with 20 additions and 0 deletions
  1. +3
    -0
      dgl/ImageWidgets.hpp
  2. +17
    -0
      dgl/src/ImageWidgets.cpp

+ 3
- 0
dgl/ImageWidgets.hpp View File

@@ -180,6 +180,7 @@ public:


float getValue() const noexcept; float getValue() const noexcept;
void setValue(float value, bool sendCallback = false) noexcept; void setValue(float value, bool sendCallback = false) noexcept;
void setDefault(float def) noexcept;


void setStartPos(const Point<int>& startPos) noexcept; void setStartPos(const Point<int>& startPos) noexcept;
void setStartPos(int x, int y) noexcept; void setStartPos(int x, int y) noexcept;
@@ -203,7 +204,9 @@ private:
float fMaximum; float fMaximum;
float fStep; float fStep;
float fValue; float fValue;
float fValueDef;
float fValueTmp; float fValueTmp;
bool fUsingDefault;


bool fDragging; bool fDragging;
bool fInverted; bool fInverted;


+ 17
- 0
dgl/src/ImageWidgets.cpp View File

@@ -649,7 +649,9 @@ ImageSlider::ImageSlider(Window& parent, const Image& image) noexcept
fMaximum(1.0f), fMaximum(1.0f),
fStep(0.0f), fStep(0.0f),
fValue(0.5f), fValue(0.5f),
fValueDef(fValue),
fValueTmp(fValue), fValueTmp(fValue),
fUsingDefault(false),
fDragging(false), fDragging(false),
fInverted(false), fInverted(false),
fValueIsSet(false), fValueIsSet(false),
@@ -670,7 +672,9 @@ ImageSlider::ImageSlider(Widget* widget, const Image& image) noexcept
fMaximum(1.0f), fMaximum(1.0f),
fStep(0.0f), fStep(0.0f),
fValue(0.5f), fValue(0.5f),
fValueDef(fValue),
fValueTmp(fValue), fValueTmp(fValue),
fUsingDefault(false),
fDragging(false), fDragging(false),
fInverted(false), fInverted(false),
fValueIsSet(false), fValueIsSet(false),
@@ -743,6 +747,12 @@ void ImageSlider::setInverted(bool inverted) noexcept
repaint(); repaint();
} }


void ImageSlider::setDefault(float value) noexcept
{
fValueDef = value;
fUsingDefault = true;
}

void ImageSlider::setRange(float min, float max) noexcept void ImageSlider::setRange(float min, float max) noexcept
{ {
fMinimum = min; fMinimum = min;
@@ -830,6 +840,13 @@ bool ImageSlider::onMouse(const MouseEvent& ev)
if (! fSliderArea.contains(ev.pos)) if (! fSliderArea.contains(ev.pos))
return false; return false;


if ((ev.mod & kModifierShift) != 0 && fUsingDefault)
{
setValue(fValueDef, true);
fValueTmp = fValue;
return true;
}

float vper; float vper;
const int x = ev.pos.getX(); const int x = ev.pos.getX();
const int y = ev.pos.getY(); const int y = ev.pos.getY();


Loading…
Cancel
Save