diff options
Diffstat (limited to 'gui/widget.cpp')
-rw-r--r-- | gui/widget.cpp | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/gui/widget.cpp b/gui/widget.cpp index f170ddadc2..22bf54096c 100644 --- a/gui/widget.cpp +++ b/gui/widget.cpp @@ -127,7 +127,7 @@ ButtonWidget::~ButtonWidget() } } -void ButtonWidget::handleClick(int x, int y, int button) +void ButtonWidget::handleMouseDown(int x, int y, int button) { if (_flags & WIDGET_ENABLED) sendCommand(_cmd, 0); @@ -155,7 +155,7 @@ CheckboxWidget::CheckboxWidget(Dialog *boss, int x, int y, int w, int h, const c _type = kCheckboxWidget; } -void CheckboxWidget::handleClick(int x, int y, int button) +void CheckboxWidget::handleMouseDown(int x, int y, int button) { if (_flags & WIDGET_ENABLED) { _state = !_state; @@ -190,8 +190,8 @@ SliderWidget::SliderWidget(Dialog *boss, int x, int y, int w, int h, const char _type = kSliderWidget; } -void SliderWidget::handleMouseMoved(int x, int y, int state) { - if (state == 1) { +void SliderWidget::handleMouseMoved(int x, int y, int button) { + if (_isDragging) { int newvalue = x * 100 / _w; if (newvalue != _value) { @@ -217,3 +217,18 @@ void SliderWidget::drawWidget(bool hilite) // Draw the 'bar' gui->fillRect(_x + 2 + ((_w - 5) * _value / 100), _y + 2, 2, _h - 4, hilite ? gui->_textcolorhi : gui->_textcolor); } + +void SliderWidget::handleMouseDown(int x, int y, int button) { + int barx; + + barx=2 + ((_w - 5) * _old_value / 100); + + // only start dragging if mouse is over bar + if (x > (barx-3) && x < (barx+3)) + _isDragging=true; +} + +void SliderWidget::handleMouseUp(int x, int y, int button) { + if (_isDragging) + _isDragging=false; +} |