Subject: bug#61307: 30.0.50; pixel-scroll-precision-mode: window-scroll-functions?

From: Michael Heerdegen <[email-masked]>
Date: Wed, 15 Feb 2023 05:06:12 +0100

Eli Zaretskii <[email-masked]> writes:

> > I don't see the hook called for each pixel.  What do you mean?
>
> Each time you do the smallest possible scroll, by how many pixels, or
> by what fraction of the screen-line's height does Emacs scroll the
> window?  IOW, by how many pixels is the display scrolled for each call
> to window-scroll-functions?
>
> Precision pixel-scrolling supports many different devices (mice and
> touch-pads), which can scroll at very different resolutions.  The
> possibility that window-scroll-functions be called too frequently
> depends on what exactly do your device and your Emacs build support in
> this scenario, and I don't yet have a clear idea about that, since you
> didn't tell.

I feel a bit lost.  What should I tell?  I have no idea what I could
know about this that you don't already know.

But I understand that what I see when scrolling with a normal wheel
mouse is only one case we need to handle.  AFAIU, scrolling by
dragging the vertical scroll bar is not handled by precision scrolling.

So we speak about touch events (although
`pixel-scroll-precision-mode-map' only binds <touch-end>, but that event
may also be generated very often) and mice with a more or less
continuous scroll wheel (or ball) and such things.

I don't have access to such a device and really feel uncomfortable to
suggest a patch for these cases I must admit.

Or would you suggest to call the window-scroll functions just after a
certain time limit?  A pixel-delta limit would probably not be
sufficient, since we want to call the functions also for small scroll
amounts if they are not directly followed by another scroll (I guess).

So do we just want to use a timer for this?  Or use a combination of
those approaches (scrolling farther than a certain amount fires the
scroll functions immediately, but also small amounts call them if the
user doesn't scroll after delta more milliseconds)?

Michael.