[Development] mouse wheel zooming and inertial scrolling
René J. V. Bertin
rjvbertin at gmail.com
Wed Sep 2 09:58:30 CEST 2015
Thiago Macieira wrote:
>> Fine with me too, but let's first see if there is going to be such a patch
>> for this particular issue...
> If you're not volunteering to do it, I doubt it will get done.
In case it wasn't clear yet, I was asking for pointers that could help me do
just that. I thought the development ML was the right place for that ...
Then again, maybe there's a mechanism I haven't yet discovered to switch off the
setting altogether in Qt4? I know it's possible under KDE4 (and that apparently
there was a time where the same event led to accelerated scrolling).
>> I also just noticed that pressing the Meta (Command or Control) key while an
>> inertial scroll is coasting still lets zooming kick in in the xcb plugin,
>> meaning that the same application doesn't work consistently across platform
>> plugins. Isn't that a bug, and if so, what is the intended behaviour?
> That depends what does the interpreting of mouse and modifiers. They may come
> as different events from the OS or the OS could delay the keypress of the
> modifier until the coasting is finished.
Rather the former as the keypress can have an immediate effect with both the
cocoa and the xcb plugins. With the xcb plugin (and in Qt4's cocoa backend)
zooming starts immediately when the Control (or Command key) is pressed. With
the cocoa plugin, the Command keypress can be used to trigger a keyboard
shortcut while scrolling still coasts.
> What matters is the behaviour compared to other applications on that platform.
So cross-platform consistency is not of consideration?
BTW, I just noticed that Qt 5.3 and 5.2 both and don't the coasting when
scrolling hits the top or bottom of the view. As a result, the zooming
continues. ATM I can only test 5.4's behaviour with the xcb plugin under OS X
but I suspect it will do the same. I presume that this does *not* happen with
the cocoa plugin (nor Qt4 on OS X) because whatever sends the events also knows
what they're destined for and thus takes the view(port)'s vertical position into
account (or maybe even handles the whole scrolling bit itself). AFAIK this
cannot be the case with X11 so it'd be up to Qt to stop the coasting as soon as
the view is scrolled all the way up or down (or horizontally), correct?
Maybe I should asked this first:
Where is simulated inertial scrolling implemented under X11/xcb?
More information about the Development