aboutsummaryrefslogtreecommitdiff
path: root/gui/ScrollBarWidget.cpp
diff options
context:
space:
mode:
authorMax Horn2002-10-09 19:32:54 +0000
committerMax Horn2002-10-09 19:32:54 +0000
commit06d5fe86f587e40718b47bea86d794bb99a6ee48 (patch)
treee10a50bdc2649f0b05898f10f43ba127caeeaff2 /gui/ScrollBarWidget.cpp
parent0c5b62b2e49730bbe4fc301b0994aee1248e278f (diff)
downloadscummvm-rg350-06d5fe86f587e40718b47bea86d794bb99a6ee48.tar.gz
scummvm-rg350-06d5fe86f587e40718b47bea86d794bb99a6ee48.tar.bz2
scummvm-rg350-06d5fe86f587e40718b47bea86d794bb99a6ee48.zip
Fix for bug #620854 (launcher crash)
svn-id: r5116
Diffstat (limited to 'gui/ScrollBarWidget.cpp')
-rw-r--r--gui/ScrollBarWidget.cpp29
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);