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
|
||||
.vscode/
|
||||
|
||||
# mypy cache
|
||||
.mypy_cache
|
||||
|
|
|
@ -1,6 +1,10 @@
|
|||
import difflib
|
||||
import logging
|
||||
|
||||
import util.format
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def never(init):
|
||||
def call_init(obj, *args, **kwargs):
|
||||
|
@ -49,9 +53,10 @@ def scrollable(func):
|
|||
direction = widget.get("scrolling.direction", "right")
|
||||
|
||||
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")
|
||||
else:
|
||||
scroll_speed = -scroll_speed
|
||||
|
||||
next_start = start + scroll_speed
|
||||
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.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
|
||||
|
|
Loading…
Reference in a new issue