Handle n+1 characters in the scrolling decorator
This commit is contained in:
parent
3bb2fb8247
commit
a8df4a5f9d
3 changed files with 19 additions and 2 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -94,3 +94,6 @@ ENV/
|
||||||
|
|
||||||
# Visual studio project files
|
# Visual studio project files
|
||||||
.vscode/
|
.vscode/
|
||||||
|
|
||||||
|
# mypy cache
|
||||||
|
.mypy_cache
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
import difflib
|
import difflib
|
||||||
|
import logging
|
||||||
|
|
||||||
import util.format
|
import util.format
|
||||||
|
|
||||||
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def never(init):
|
def never(init):
|
||||||
def call_init(obj, *args, **kwargs):
|
def call_init(obj, *args, **kwargs):
|
||||||
|
@ -49,9 +53,10 @@ def scrollable(func):
|
||||||
direction = widget.get("scrolling.direction", "right")
|
direction = widget.get("scrolling.direction", "right")
|
||||||
|
|
||||||
if direction == "left":
|
if direction == "left":
|
||||||
scroll_speed = -scroll_speed
|
if start - scroll_speed < 0: # bounce back
|
||||||
if start + scroll_speed <= 0: # bounce back
|
|
||||||
widget.set("scrolling.direction", "right")
|
widget.set("scrolling.direction", "right")
|
||||||
|
else:
|
||||||
|
scroll_speed = -scroll_speed
|
||||||
|
|
||||||
next_start = start + scroll_speed
|
next_start = start + scroll_speed
|
||||||
if next_start + width > len(text):
|
if next_start + width > len(text):
|
||||||
|
|
|
@ -81,5 +81,14 @@ class config(unittest.TestCase):
|
||||||
self.module.text = "this is a different song (0:12)"
|
self.module.text = "this is a different song (0:12)"
|
||||||
self.assertEqual(self.module.text[0:10], self.module.get(self.widget))
|
self.assertEqual(self.module.text[0:10], self.module.get(self.widget))
|
||||||
|
|
||||||
|
def test_n_plus_one(self):
|
||||||
|
self.module.text = "10 letters"
|
||||||
|
self.module.set("scrolling.width", 9)
|
||||||
|
self.assertEqual(self.module.text[0:9], self.module.get(self.widget))
|
||||||
|
self.assertEqual(self.module.text[1:10], self.module.get(self.widget))
|
||||||
|
self.assertEqual(self.module.text[0:9], self.module.get(self.widget))
|
||||||
|
self.assertEqual(self.module.text[1:10], self.module.get(self.widget))
|
||||||
|
self.assertEqual(self.module.text[0:9], self.module.get(self.widget))
|
||||||
|
|
||||||
|
|
||||||
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
|
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
|
||||||
|
|
Loading…
Reference in a new issue