Merge lp:~vanvugt/qtmir/fix-1607240 into lp:qtmir

Proposed by Daniel van Vugt
Status: Merged
Approved by: Daniel d'Andrada
Approved revision: 533
Merged at revision: 544
Proposed branch: lp:~vanvugt/qtmir/fix-1607240
Merge into: lp:qtmir
Diff against target: 32 lines (+7/-2)
2 files modified
src/modules/Unity/Application/mirsurface.cpp (+5/-1)
src/platforms/mirserver/qteventfeeder.cpp (+2/-1)
To merge this branch: bzr merge lp:~vanvugt/qtmir/fix-1607240
Reviewer Review Type Date Requested Status
Daniel d'Andrada (community) Abstain
Unity8 CI Bot (community) continuous-integration Approve
Lukáš Tinkl (community) Approve
Review via email: mp+301449@code.launchpad.net

Commit message

Fix incorrect mouse wheel/touchpad scrolling scale (LP: #1607240)
and also add sufficient precision that high-resolution touchpad
scrolling now works! (LP: #1607223)

This fixes two mistakes:
 1. angleDelta is not in degrees but eighths of a degree, so the magic
    constant 15 should be 120 (QWheelEvent::DefaultDeltasPerStep)
    [http://doc.qt.io/qt-5/qwheelevent.html#angleDelta].
 2. When converting from Qt back into a Mir event we forgot completely
    to divide by the same factor to get back to the Mir scale of things.

Description of the change

Additional fixes required!

Unfortunately we've built an ecosystem with tweaked values to work with
the old incorrect scroll values and additional fixes are required after
this one:

  Xmir: Fix released in yakkety
  System Settings:
     https://code.launchpad.net/~vanvugt/gsettings-ubuntu-touch-schemas/fix-1607240/+merge/301605
     https://code.launchpad.net/~vanvugt/ubuntu-system-settings/fix-1607240/+merge/301606
  webbrowser and other Qt apps:
     https://code.launchpad.net/~vanvugt/qtubuntu/correct-scroll-speed/+merge/301465

To post a comment you must log in.
Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :

FAILED: Continuous integration, rev:530
https://unity8-jenkins.ubuntu.com/job/lp-qtmir-ci/312/
Executed test runs:
    FAILURE: https://unity8-jenkins.ubuntu.com/job/build/2402/console
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/2430
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/2317
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/2317
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=yakkety/2317
    FAILURE: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=vivid+overlay/2310/console
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/2310
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/2310/artifact/output/*zip*/output.zip
    FAILURE: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=yakkety/2310/console
    FAILURE: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=vivid+overlay/2310/console
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/2310
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/2310/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=yakkety/2310
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=yakkety/2310/artifact/output/*zip*/output.zip
    FAILURE: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=vivid+overlay/2310/console
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/2310
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/2310/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=yakkety/2310
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=yakkety/2310/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://unity8-jenkins.ubuntu.com/job/lp-qtmir-ci/312/rebuild

review: Needs Fixing (continuous-integration)
Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :

PASSED: Continuous integration, rev:531
https://unity8-jenkins.ubuntu.com/job/lp-qtmir-ci/313/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build/2403
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/2431
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/2318
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/2318
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=yakkety/2318
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=vivid+overlay/2311
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=vivid+overlay/2311/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/2311
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/2311/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=yakkety/2311
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=yakkety/2311/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=vivid+overlay/2311
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=vivid+overlay/2311/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/2311
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/2311/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=yakkety/2311
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=yakkety/2311/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=vivid+overlay/2311
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=vivid+overlay/2311/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/2311
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/2311/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=yakkety/2311
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=yakkety/2311/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://unity8-jenkins.ubuntu.com/job/lp-qtmir-ci/313/rebuild

review: Approve (continuous-integration)
Revision history for this message
Lukáš Tinkl (lukas-kde) wrote :

Great, works fine for me

That is with the default scrolling speeds, which still feels a bit slow for mouse wheel; setting it to 1.0 makes it crawl... no idea where the real problem lies.

Note that gsettings-ubuntu-touch-schemas holds the 2 default values for the mouse and touchpad scroll speeds.

review: Approve
Revision history for this message
Daniel d'Andrada (dandrader) wrote :

"""
QPointF mir_scroll(qtEvent->angleDelta());
"""

Please do follow the project's coding style. We do camelCase. hence:

s/mir_scroll/mirScroll

review: Needs Fixing
lp:~vanvugt/qtmir/fix-1607240 updated
532. By Daniel van Vugt

camelCase and clarify comments

Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :

FAILED: Continuous integration, rev:532
https://unity8-jenkins.ubuntu.com/job/lp-qtmir-ci/315/
Executed test runs:
    FAILURE: https://unity8-jenkins.ubuntu.com/job/build/2418/console
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/2446
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/2333
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/2333
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=yakkety/2333
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=vivid+overlay/2326
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=vivid+overlay/2326/artifact/output/*zip*/output.zip
    FAILURE: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/2326/console
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=yakkety/2326
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=yakkety/2326/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=vivid+overlay/2326
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=vivid+overlay/2326/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/2326
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/2326/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=yakkety/2326
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=yakkety/2326/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=vivid+overlay/2326
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=vivid+overlay/2326/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/2326
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/2326/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=yakkety/2326
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=yakkety/2326/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://unity8-jenkins.ubuntu.com/job/lp-qtmir-ci/315/rebuild

review: Needs Fixing (continuous-integration)
lp:~vanvugt/qtmir/fix-1607240 updated
533. By Daniel van Vugt

Try again

Revision history for this message
Unity8 CI Bot (unity8-ci-bot) wrote :

PASSED: Continuous integration, rev:533
https://unity8-jenkins.ubuntu.com/job/lp-qtmir-ci/316/
Executed test runs:
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build/2419
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-0-fetch/2447
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/2334
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/2334
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-1-sourcepkg/release=yakkety/2334
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=vivid+overlay/2327
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=vivid+overlay/2327/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/2327
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=xenial+overlay/2327/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=yakkety/2327
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=amd64,release=yakkety/2327/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=vivid+overlay/2327
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=vivid+overlay/2327/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/2327
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=xenial+overlay/2327/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=yakkety/2327
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=armhf,release=yakkety/2327/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=vivid+overlay/2327
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=vivid+overlay/2327/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/2327
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=xenial+overlay/2327/artifact/output/*zip*/output.zip
    SUCCESS: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=yakkety/2327
        deb: https://unity8-jenkins.ubuntu.com/job/build-2-binpkg/arch=i386,release=yakkety/2327/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://unity8-jenkins.ubuntu.com/job/lp-qtmir-ci/316/rebuild

review: Approve (continuous-integration)
Revision history for this message
Daniel d'Andrada (dandrader) wrote :

Thanks!

review: Abstain

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/modules/Unity/Application/mirsurface.cpp'
2--- src/modules/Unity/Application/mirsurface.cpp 2016-07-05 12:41:04 +0000
3+++ src/modules/Unity/Application/mirsurface.cpp 2016-08-01 03:01:35 +0000
4@@ -109,9 +109,13 @@
5 auto modifiers = getMirModifiersFromQt(qtEvent->modifiers());
6 auto buttons = getMirButtonsFromQt(qtEvent->buttons());
7
8+ QPointF mirScroll(qtEvent->angleDelta());
9+ // QWheelEvent::DefaultDeltasPerStep = 120 but not defined on vivid
10+ mirScroll /= 120.0f;
11+
12 return mir::events::make_event(0 /*DeviceID */, timestamp, std::vector<uint8_t>{} /* cookie */, modifiers, mir_pointer_action_motion,
13 buttons, qtEvent->x(), qtEvent->y(),
14- qtEvent->angleDelta().x(), qtEvent->angleDelta().y(),
15+ mirScroll.x(), mirScroll.y(),
16 0, 0);
17 }
18
19
20=== modified file 'src/platforms/mirserver/qteventfeeder.cpp'
21--- src/platforms/mirserver/qteventfeeder.cpp 2016-05-06 08:41:15 +0000
22+++ src/platforms/mirserver/qteventfeeder.cpp 2016-08-01 03:01:35 +0000
23@@ -577,7 +577,8 @@
24 const float vDelta = mir_pointer_event_axis_value(pev, mir_pointer_axis_vscroll);
25
26 if (hDelta != 0 || vDelta != 0) {
27- const QPoint angleDelta = QPoint(hDelta * 15, vDelta * 15);
28+ // QWheelEvent::DefaultDeltasPerStep = 120 but not defined on vivid
29+ const QPoint angleDelta(120 * hDelta, 120 * vDelta);
30 mQtWindowSystem->handleWheelEvent(timestamp.count(), angleDelta, modifiers);
31 }
32 auto buttons = getQtMouseButtonsfromMirPointerEvent(pev);

Subscribers

People subscribed via source and target branches