Subject: Re: bug#50269: 27.2; Request: use GTK continuous scroll events for smooth touchpad scrolling

From: Alexander Huntley <[email-masked]>
Date: Wed, 1 Sep 2021 13:57:46 +0100

>> With pixel-scroll-mode on, when pixel-resolution-fine-flag is nil (the
>> default), I cannot get Emacs to scroll up by "just a few pixels",
>> however small my movement on the touchpad.  Emacs always waits for
>> "enough movement" to scroll up a complete line, although the *animation*
>> is indeed done pixel-by-pixel (as opposed to line-by-line when
>> pixel-scroll-mode is off).
>>
>> On e.g. Mousepad (XFCE's text editor), if I move "just a bit" on the
>> touchpad, the display moves by "just a few pixels", i.e. less than a
>> full line.  FWIW setting pixel-resolution-fine-flag to 1 seems to allow
>> Emacs to do the same.
> So if pixel-resolution-fine-flag is set, the behavior is the expected
> one, and we can conclude that Emacs passes this test?

If the flag is set to 1, then yes the scrolling works as desired, but only
when scrolling with the touchpad slowly (although perhaps it is scrolling
by 2 or 3 pixels instead of only 1).

When scrolling quickly, Emacs scrolls abruptly by many lines at a
time, which is not what we want. I'm sure this is possible to disable.

But now scrolling with a mouse wheel also only causes the view to shift by
1 pixel per "wheel click".

IMO the best way to solve this would be to use GTK scrolling events. They
give the correct magnitude of the scroll event (which in touchpads is
variable and much smaller than for mouse wheels). Hence Emacs would not
have to distinguish between mouse vs touchpad scrolling; it would all
be handled by GTK.