https://bugzilla.gnome.org/show_bug.cgi?id=783260
---
Gnome Shell app list scrolls too quickly with mouse wheel.
It seems to scroll one page per wheel tick, which is way too much.
ProblemType: Bug
DistroRelease: Ubuntu 17.10
Package: gnome-shell 3.24.2-0ubuntu4
ProcVersionSignature: Ubuntu 4.10.0-21.23-generic 4.10.11
Uname: Linux 4.10.0-21-generic x86_64
ApportVersion: 2.20.5-0ubuntu4
Architecture: amd64
Date: Tue May 30 14:08:46 2017
DisplayManager: lightdm
GsettingsChanges:
b'org.gnome.shell' b'command-history' b"['ls', 'xterm', 'caribou', 'cariboukkk', 'cariboukkkkjj']"
b'org.gnome.shell' b'app-picker-view' b'uint32 1'
b'org.gnome.shell' b'favorite-apps' b"['firefox.desktop', 'chromium-browser.desktop', 'gnome-control-center.desktop', 'org.gnome.Terminal.desktop', 'rhythmbox.desktop', 'yelp.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Software.desktop']"
b'org.gnome.desktop.interface' b'gtk-im-module' b"'gtk-im-context-simple'"
b'org.gnome.desktop.interface' b'scaling-factor' b'uint32 1'
InstallationDate: Installed on 2017-05-03 (27 days ago)
InstallationMedia: Ubuntu 17.10 "Artful Aardvark" - Alpha amd64 (20170502)
SourcePackage: gnome-shell
UpgradeStatus: No upgrade log present (probably fresh install)
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.