Glitchy scrolling with (touchpad emulated) mouse wheel
Using (touchpad emulated) mouse wheel to scroll with current git checkout (6318c717cfc4c3d88ac34e1624fae48e8dfab584). Looks like the scroll overshoots a little then bounces back, on each line. Does not occur with epy.
That's weird, I cannot replicate it, is there anymore details to recreate it? Does it work on different terminals?
Arch Linux. Don't really know what's relevant. It's present in all combinations of the following that I've tried:
bash,zshkitty,konsole,xfce4-terminal,xterm,uxterm- Wayland: Plasma
- X11: Plasma, XFCE
I'm scrolling with a touchpad. Maybe it's a hardware issue. I know some touchpads report scroll behavior differently from the wheel on a mouse. Sorry for inaccurate description. Have edited to clarify.
Tested with an external mouse. Same problem.
~~Tried compiling with nuitka, and the problem is absent/reduced, so scrolling may be affected by some processing. Does baca perform some calculations in a loop that epy doesn't?~~
Occasionally, the glitchy scrolling does not occur, but far more often it does. (Out of all testing so far, only 2-3 times it was not glitchy.)
I was poking around in the code and found this:
contents.py (L158-L162):
def on_mouse_scroll_down(self, _: events.MouseScrollDown) -> None:
self.screen.scroll_down()
def on_mouse_scroll_up(self, _: events.MouseScrollUp) -> None:
self.screen.scroll_up()
Changing it to the following (based on Textual: widget.py) corrects the scrolling behavior:
def on_mouse_scroll_down(self, _: events.MouseScrollDown) -> None:
if self._scroll_down_for_pointer(animate=False):
event.stop()
def on_mouse_scroll_up(self, _: events.MouseScrollUp) -> None:
if self._scroll_up_for_pointer(animate=False):
event.stop()
Switching to self.scroll_*() also seems to work. Glitchiness only occurs with self.screen.scroll_*().
Did some more testing.
- Version of textual on my computer with glitchy scrolling is v0.27.0. On another computer with the same version of textual, scroll behavior is the same. (Installing
bacaon Arch using AUR package.) - Installing with
pipx install bacauses textual v0.16.0 with scrolling behaving as expected. Changing fromself.screen.scroll_*()toself.scroll_*()results in no response to the scroll wheel (no scrolling). - Updating textual to v0.17.0 in pipx venv results in glitchy scroll behavior.