After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 707973 - appDisplay: Improve touchpad scroll on app picker
appDisplay: Improve touchpad scroll on app picker
Status: RESOLVED FIXED
Product: gnome-shell
Classification: Core
Component: general
unspecified
Other All
: Normal normal
: ---
Assigned To: gnome-shell-maint
gnome-shell-maint
: 727206 731197 747938 758142 772017 775936 788996 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2013-09-12 13:25 UTC by Carlos Soriano
Modified: 2020-01-13 07:45 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
appDisplay: Improve touchpad scroll on app picker (7.08 KB, patch)
2013-09-12 13:25 UTC, Carlos Soriano
rejected Details | Review

Description Carlos Soriano 2013-09-12 13:25:55 UTC
Currently scroll on touchpad devices are managed like pointer
devices scrolling. But since most touchpad devices are smooth
scroll capables, they trigger a lot of scroll-event for each
little change with the fingers.
Also, interpolated events cause that the view keeps scrolling
after the user raise his hand.
For a discrete elements inside a scrollView like the appPicker
it is annoying, since it changes pages for each little change.
Also, although we guess how to solve that; it still changes pages
after the user raise his hand.

This patch fixes both drawbacks, first, holding the page change
while the animation of the page change is ongoing, which solves
the first drawback; and second, trying to avoid the events
triggered after the user raise his hand, using some heuristics with a
historic of the dy values of scroll and taking advantage of
that the values of smooth scrolling draw a curve, and we can
filter the values that are decreasing, which are the values
that are triggered after the user raise his hand.
Comment 1 Carlos Soriano 2013-09-12 13:25:58 UTC
Created attachment 254782 [details] [review]
appDisplay: Improve touchpad scroll on app picker

Currently scroll on touchpad devices are managed like pointer
devices scrolling. But since most touchpad devices are smooth
scroll capables, they trigger a lot of scroll-event for each
little change with the fingers.
Also, interpolated events cause that the view keeps scrolling
after the user raise his hand.
For a discrete elements inside a scrollView like the appPicker
it is annoying, since it changes pages for each little change.
Also, although we guess how to solve that; it still changes pages
after the user raise his hand.

This patch fixes both drawbacks, first, holding the page change
while the animation of the page change is ongoing, which solves
the first drawback; and second, trying to avoid the events
triggered after the user raise his hand, using some heuristics with a
historic of the dy values of scroll and taking advantage of
that the values of smooth scrolling draw a curve, and we can
filter the values that are decreasing, which are the values
that are triggered after the user raise his hand.
Comment 2 Florian Müllner 2015-03-19 02:04:59 UTC
*** Bug 731197 has been marked as a duplicate of this bug. ***
Comment 3 Florian Müllner 2015-03-19 02:05:09 UTC
*** Bug 727206 has been marked as a duplicate of this bug. ***
Comment 4 Carlos Soriano 2015-03-19 10:21:52 UTC
Review of attachment 254782 [details] [review]:

This patch is a big hack if someone wonders why is it not reviewed, so I reject it to make it clear...
Comment 5 Florian Müllner 2015-04-15 20:04:47 UTC
*** Bug 747938 has been marked as a duplicate of this bug. ***
Comment 6 Emmanuele Bassi (:ebassi) 2015-05-05 16:32:16 UTC
How pagination works on MacOS with a trackpad, from: https://support.apple.com/en-gb/HT4721

"""
Swipe to navigate – Web pages in Safari, documents in Preview and more, just like thumbing a page in a book. Note: If there is horizontal content to scroll, this gesture will first scrolls to the end of content and then it will move to the next page.

 * Magic Trackpad – A horizontal two finger swipe will show the next or previous page. Tip: Once you pass the rubber-band threshold, lift your fingers to change page.  Also you can flick your fingers at the end of the swipe for momentum.
"""

This also applies to Launchpad (the equivalent of the application grid display in the shell).
Comment 7 Florian Müllner 2015-11-16 10:43:51 UTC
*** Bug 758142 has been marked as a duplicate of this bug. ***
Comment 8 Florian Müllner 2016-09-26 22:22:05 UTC
*** Bug 772017 has been marked as a duplicate of this bug. ***
Comment 9 luke.nukem.jones@gmail.com 2016-09-26 23:26:20 UTC
Hi all, if the previous proposed patch isn't suitable, here is what I've proposed in a duplicate reporting of this bug;

Proposed Solution:
There are a few solutions possible for this;

1: Make scrolling proportional reliant on a user defined number of "scroll lines" - meaning, the user has to scroll their touchpad a certain amount before the page changes.

2: Scroll by icon row - this may be more intuitive to use, and also retain the current behaviour somewhat. The behaviour being that the user scrolls *one click* and the application launcher scrolls one row per scroll *click*.

3: Implement free-scrolling, basically the same behaviour as seen when using an application folder within the launcher.

Options 2-3 may be much easier to implement, with option 2 possibly being the more natural behaviour a user would expect when using a mouse wheel. Option 3 may feel more natural when using a touchpad, and is how an Android device scrolls, depending on the launcher used.

The ideal solution would be to have an option for page/row/free scrolling - perhaps available as a right-click context menu when right-clicking a blank spot within the launcher.
Comment 10 Florian Müllner 2016-12-19 17:38:19 UTC
*** Bug 775936 has been marked as a duplicate of this bug. ***
Comment 11 freeroot 2016-12-22 10:19:46 UTC
I think about something that could work but should be implemented in libinput.

It's like in mathematics : functions can be coutinuous or discrete. Touchpad simulates a continuous function and we would like to have a sort of steps which are not continuous but discrete. Mouse just have discrete scrolls. We have in reality two types of scroll : the continous-scroll (now implemented) and the discrete-scroll (should be implemented ?)

Discrete-scroll means define steps, one step equals to one discrete-scroll. Many ways could be imagined : wait some time (0.2 sec), change of speed (decreasing then increasing), position of fingers (a minimal distance). I love the change of speed^^.

But then, applications must use the discrete-scroll and not the continuous-scroll to work properly depending on the situation (for example, continuous-scroll for firefox web pages but discrete-scroll for firefox items menu). Continuous-scroll can be the default one.
Comment 12 Florian Müllner 2017-10-14 21:54:04 UTC
*** Bug 788996 has been marked as a duplicate of this bug. ***
Comment 13 Florian Müllner 2018-11-01 19:21:24 UTC
*** Bug 783260 has been marked as a duplicate of this bug. ***
Comment 14 Alexander Mikhaylenko 2019-10-21 17:11:22 UTC
I guess https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/605 fixes this
Comment 15 Daniel van Vugt 2020-01-13 07:07:19 UTC
That hasn't landed yet. Reopen this bug? If not then I will reopen bug 783260 because that one is still happening even with the latest master code.
Comment 16 Alexander Mikhaylenko 2020-01-13 07:42:45 UTC
It has, it was split, and the relevant fixes were in https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/826.

As for bug 783260, though I'd like to know what speed is not too fast. It's maximum of one page per 250ms for wheel now instead of no restriction, see ttps://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/825.
Comment 17 Daniel van Vugt 2020-01-13 07:45:40 UTC
One page per wheel tick is too fast, which is what it's doing. Anyway, that should now be discussed in bug 783260 instead of here.