[tor-commits] [nyx/master] Fix slider math
atagar at torproject.org
atagar at torproject.org
Sun Nov 27 19:02:44 UTC 2016
commit dabcc36baab06598fa4baa76bb779f09d82814cc
Author: Damian Johnson <atagar at torproject.org>
Date: Wed Nov 16 09:52:35 2016 -0800
Fix slider math
Damn this scrollbar method has given me a lot of headaches. Correcting an
off-by-one error that caused the tests to fail on my netbook but pass on my
pc.
I really hope this is the last time I need to weed one of these out. For my
personal reference here's the numbers when working through the test...
top = 15
top_index = 21
size = 30
self.height = 25
scrollbar_height = self.height - top - 1 = 25 - 15 - 1 = 9
bottom_index = top_index + scrollbar_height = 21 + 9 = 30
slider_top = (scrollbar_height * top_index) // size = (9 * 21) // 30 = 6
slider_size = (scrollbar_height * (bottom_index - top_index + 1)) // size = (9 * (30 - 21 + 1)) // 30 = 3
---
nyx/curses.py | 9 +++++++--
test/subwindow.py | 6 +++---
2 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/nyx/curses.py b/nyx/curses.py
index b733449..4396ab4 100644
--- a/nyx/curses.py
+++ b/nyx/curses.py
@@ -885,9 +885,14 @@ class _Subwindow(object):
# determines scrollbar dimensions
scrollbar_height = self.height - top - 1 # -1 is for the bottom border
- bottom_index = top_index + scrollbar_height + 1
+
+ # Bottom index of the scroll bar. We show (scrollbar_height + 1) items at a
+ # time but have -1 to make the bottom bound inclusive.
+
+ bottom_index = top_index + scrollbar_height
+
slider_top = (scrollbar_height * top_index) // size
- slider_size = (scrollbar_height * (bottom_index - top_index)) // size
+ slider_size = (scrollbar_height * (bottom_index - top_index + 1)) // size
max_slider_top = scrollbar_height - slider_size - 1
# ensures slider isn't at top or bottom unless really at those extreme bounds
diff --git a/test/subwindow.py b/test/subwindow.py
index db97970..61246d2 100644
--- a/test/subwindow.py
+++ b/test/subwindow.py
@@ -34,7 +34,7 @@ EXPECTED_SCROLLBAR_TOP = """
*|
*|
*|
- |
+*|
|
|
|
@@ -48,7 +48,7 @@ EXPECTED_SCROLLBAR_MIDDLE = """
*|
*|
*|
- |
+*|
|
|
|
@@ -62,7 +62,7 @@ EXPECTED_SCROLLBAR_BOTTOM = """
|
|
|
- |
+*|
*|
*|
*|
More information about the tor-commits
mailing list