diff options
Diffstat (limited to 'gui')
-rw-r--r-- | gui/ScrollBarWidget.cpp | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/gui/ScrollBarWidget.cpp b/gui/ScrollBarWidget.cpp index 45628e9a46..c9653ef72c 100644 --- a/gui/ScrollBarWidget.cpp +++ b/gui/ScrollBarWidget.cpp @@ -75,7 +75,7 @@ void ScrollBarWidget::handleMouseDown(int x, int y, int button, int clickCount) int old_pos = _currentPos; // Do nothing if there are less items than fit on one page - if (_numEntries < _entriesPerPage) + if (_numEntries <= _entriesPerPage) return; if (y <= UP_DOWN_BOX_HEIGHT) { @@ -107,7 +107,7 @@ void ScrollBarWidget::handleMouseUp(int x, int y, int button, int clickCount) void ScrollBarWidget::handleMouseMoved(int x, int y, int button) { // Do nothing if there are less items than fit on one page - if (_numEntries < _entriesPerPage) + if (_numEntries <= _entriesPerPage) return; if (_draggingPart == kSliderPart) { @@ -165,7 +165,7 @@ void ScrollBarWidget::handleTickle() void ScrollBarWidget::checkBounds(int old_pos) { - if (_numEntries < _entriesPerPage || _currentPos < 0) + if (_numEntries <= _entriesPerPage || _currentPos < 0) _currentPos = 0; else if (_currentPos > _numEntries - _entriesPerPage) _currentPos = _numEntries - _entriesPerPage; @@ -179,14 +179,19 @@ void ScrollBarWidget::checkBounds(int old_pos) void ScrollBarWidget::recalc() { - _sliderHeight = (_h - 2 * UP_DOWN_BOX_HEIGHT) * _entriesPerPage / _numEntries; - if (_sliderHeight < UP_DOWN_BOX_HEIGHT) - _sliderHeight = UP_DOWN_BOX_HEIGHT; - - _sliderPos = - UP_DOWN_BOX_HEIGHT + (_h - 2 * UP_DOWN_BOX_HEIGHT - _sliderHeight) * _currentPos / (_numEntries - _entriesPerPage); - if (_sliderPos < 0) - _sliderPos = 0; + if (_numEntries > _entriesPerPage) { + _sliderHeight = (_h - 2 * UP_DOWN_BOX_HEIGHT) * _entriesPerPage / _numEntries; + if (_sliderHeight < UP_DOWN_BOX_HEIGHT) + _sliderHeight = UP_DOWN_BOX_HEIGHT; + + _sliderPos = + UP_DOWN_BOX_HEIGHT + (_h - 2 * UP_DOWN_BOX_HEIGHT - _sliderHeight) * _currentPos / (_numEntries - _entriesPerPage); + if (_sliderPos < 0) + _sliderPos = 0; + } else { + _sliderHeight = _h - 2 * UP_DOWN_BOX_HEIGHT; + _sliderPos = UP_DOWN_BOX_HEIGHT; + } } @@ -194,7 +199,7 @@ void ScrollBarWidget::drawWidget(bool hilite) { NewGui *gui = _boss->getGui(); int bottomY = _y + _h; - bool isSinglePage = (_numEntries < _entriesPerPage); + bool isSinglePage = (_numEntries <= _entriesPerPage); gui->frameRect(_x, _y, _w, _h, gui->_shadowcolor); |