Open xiota opened 1 year ago
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
, zsh
kitty
, konsole
, xfce4-terminal
, xterm
, uxterm
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.
baca
on Arch using AUR package.)pipx install baca
uses textual v0.16.0 with scrolling behaving as expected. Changing from self.screen.scroll_*()
to self.scroll_*()
results in no response to the scroll wheel (no scrolling).
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
.