summaryrefslogtreecommitdiff
path: root/skinsttng.c
diff options
context:
space:
mode:
Diffstat (limited to 'skinsttng.c')
-rw-r--r--skinsttng.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/skinsttng.c b/skinsttng.c
index 0aa22b7..f629841 100644
--- a/skinsttng.c
+++ b/skinsttng.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: skinsttng.c 1.26 2008/02/17 14:23:45 kls Exp $
+ * $Id: skinsttng.c 1.28 2008/02/23 10:23:44 kls Exp $
*/
// Star Trek: The Next Generation® is a registered trademark of Paramount Pictures
@@ -442,13 +442,14 @@ void cSkinSTTNGDisplayMenu::DrawScrollbar(int Total, int Offset, int Shown, int
if (Total > 0 && Total > Shown) {
int h = lineHeight;
int yt = Top;
- int yb = yt + Height - 1;
+ int yb = yt + Height;
int st = yt + h + Gap;
int sb = yb - h - Gap;
- int tt = st + (sb - st + 1) * Offset / Total;
- int tb = tt + (sb - st + 1) * Shown / Total;
- osd->DrawRectangle(x5, st, x5 + ScrollWidth - 1, sb, Theme.Color(clrMenuScrollbarTotal));
- osd->DrawRectangle(x5, tt, x5 + ScrollWidth - 1, tb, Theme.Color(clrMenuScrollbarShown));
+ int th = max(int((sb - st) * double(Shown) / Total + 0.5), ScrollWidth);
+ int tt = min(int(st + (sb - st) * double(Offset) / Total + 0.5), sb - th);
+ int tb = min(tt + th, sb);
+ osd->DrawRectangle(x5, st, x5 + ScrollWidth - 1, sb - 1, Theme.Color(clrMenuScrollbarTotal));
+ osd->DrawRectangle(x5, tt, x5 + ScrollWidth - 1, tb - 1, Theme.Color(clrMenuScrollbarShown));
osd->DrawRectangle(x5, yt, x6 - 1, yt + h - 1, frameColor);
osd->DrawEllipse (x6, yt, x7 - 1, yt + h - 1, frameColor, 5);
osd->DrawRectangle(x5, yb - h, x6 - 1, yb - 1, frameColor);