Browse Source

Add ability to shift-click to reset sliders.

Fixes #69
pull/73/head
Damien Zammit Filipe Coelho <falktx@falktx.com> 5 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;
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;


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

@@ -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();


Loading…
Cancel
Save