summaryrefslogtreecommitdiff
path: root/textscreen
diff options
context:
space:
mode:
authorSimon Howard2014-04-29 01:47:13 -0400
committerSimon Howard2014-04-29 01:47:13 -0400
commit242fa1ee46f90f451c625e90f16927e13030c0a0 (patch)
tree78dd08552f78d21e3d99dfd39755aaba1f875178 /textscreen
parentdb9aee2bebf410ed9e4d44b1fae35a27de40289f (diff)
downloadchocolate-doom-242fa1ee46f90f451c625e90f16927e13030c0a0.tar.gz
chocolate-doom-242fa1ee46f90f451c625e90f16927e13030c0a0.tar.bz2
chocolate-doom-242fa1ee46f90f451c625e90f16927e13030c0a0.zip
textscreen: Fix jump when clicking on scrollbars.
Clicking on a scrollbar should scroll the cursor to that location, but the logic for it was buggy because of loss of precision when doing an integer divide. When dividing by bar_max, seek up to the nearest value so that the cursor always arrives where we clicked. Thanks to Alexandre-Xavier for reporting this bug. This fixes #359.
Diffstat (limited to 'textscreen')
-rw-r--r--textscreen/txt_scrollpane.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/textscreen/txt_scrollpane.c b/textscreen/txt_scrollpane.c
index c53f68df..3fd32124 100644
--- a/textscreen/txt_scrollpane.c
+++ b/textscreen/txt_scrollpane.c
@@ -487,7 +487,7 @@ static void TXT_ScrollPaneMousePress(TXT_UNCAST_ARG(scrollpane),
int range = FullWidth(scrollpane) - scrollpane->w;
int bar_max = scrollpane->w - 3;
- scrollpane->x = ((rel_x - 1) * range + (bar_max / 2)) / bar_max;
+ scrollpane->x = ((rel_x - 1) * range + bar_max - 1) / bar_max;
}
return;
@@ -509,7 +509,7 @@ static void TXT_ScrollPaneMousePress(TXT_UNCAST_ARG(scrollpane),
int range = FullHeight(scrollpane) - scrollpane->h;
int bar_max = scrollpane->h - 3;
- scrollpane->y = ((rel_y - 1) * range + (bar_max / 2)) / bar_max;
+ scrollpane->y = ((rel_y - 1) * range + bar_max - 1) / bar_max;
}
return;