Merge lp:~lukas-kde/qtubuntu/wheelEvent into lp:qtubuntu

Proposed by Lukáš Tinkl
Status: Merged
Approved by: Daniel d'Andrada
Approved revision: 278
Merged at revision: 282
Proposed branch: lp:~lukas-kde/qtubuntu/wheelEvent
Merge into: lp:qtubuntu
Diff against target: 66 lines (+37/-10)
1 file modified
src/ubuntumirclient/input.cpp (+37/-10)
To merge this branch: bzr merge lp:~lukas-kde/qtubuntu/wheelEvent
Reviewer Review Type Date Requested Status
Daniel d'Andrada (community) Approve
PS Jenkins bot continuous-integration Approve
Review via email: mp+273149@code.launchpad.net

Commit message

Implement support for mouse wheel events

Description of the change

Implement support for mouse wheel events

Cf. https://bugs.launchpad.net/ubuntu/+source/qtmir/+bug/1497091

* Are there any related MPs required for this MP to build/function as expected? Please list.

https://code.launchpad.net/~lukas-kde/qtmir/wheelEvent/+merge/273150

* Did you perform an exploratory manual test run of your code change and any related functionality?

Yes

* Did you make sure that your branch does not contain spurious tags?

Yes

* If you changed the packaging (debian), did you subscribe the ubuntu-unity team to this MP?

Yes

* If you changed the UI, has there been a design review?

N/A

To post a comment you must log in.
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
Revision history for this message
Daniel d'Andrada (dandrader) :
review: Approve
Revision history for this message
Daniel d'Andrada (dandrader) wrote :

There's one little thing actually:

"""
+#include <QDebug>
"""

Please remove this leftover.

review: Needs Fixing
lp:~lukas-kde/qtubuntu/wheelEvent updated
278. By Lukáš Tinkl

remove include QDebug

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

> There's one little thing actually:
>
> """
> +#include <QDebug>
> """
>
> Please remove this leftover.

Fixed

Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
Revision history for this message
Daniel d'Andrada (dandrader) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/ubuntumirclient/input.cpp'
2--- src/ubuntumirclient/input.cpp 2015-08-06 14:14:39 +0000
3+++ src/ubuntumirclient/input.cpp 2015-10-07 19:42:48 +0000
4@@ -412,10 +412,12 @@
5 if (mir_pointer_event_button_state(pev, mir_pointer_button_secondary))
6 buttons |= Qt::RightButton;
7 if (mir_pointer_event_button_state(pev, mir_pointer_button_tertiary))
8- buttons |= Qt::MidButton;
9+ buttons |= Qt::MiddleButton;
10+ if (mir_pointer_event_button_state(pev, mir_pointer_button_back))
11+ buttons |= Qt::BackButton;
12+ if (mir_pointer_event_button_state(pev, mir_pointer_button_forward))
13+ buttons |= Qt::ForwardButton;
14
15- // TODO: Should mir back and forward buttons exist?
16- // should they be Qt::X button 1 and 2?
17 return buttons;
18 }
19 }
20@@ -425,14 +427,39 @@
21 auto timestamp = mir_input_event_get_event_time(ev) / 1000000;
22
23 auto pev = mir_input_event_get_pointer_event(ev);
24+ auto action = mir_pointer_event_action(pev);
25+ auto localPoint = QPointF(mir_pointer_event_axis_value(pev, mir_pointer_axis_x),
26+ mir_pointer_event_axis_value(pev, mir_pointer_axis_y));
27 auto modifiers = qt_modifiers_from_mir(mir_pointer_event_modifiers(pev));
28- auto buttons = extract_buttons(pev);
29-
30- auto local_point = QPointF(mir_pointer_event_axis_value(pev, mir_pointer_axis_x),
31- mir_pointer_event_axis_value(pev, mir_pointer_axis_y));
32-
33- QWindowSystemInterface::handleMouseEvent(window, timestamp, local_point, local_point /* Should we omit global point instead? */,
34- buttons, modifiers);
35+
36+ switch (action) {
37+ case mir_pointer_action_button_up:
38+ case mir_pointer_action_button_down:
39+ case mir_pointer_action_motion:
40+ {
41+ const float hDelta = mir_pointer_event_axis_value(pev, mir_pointer_axis_hscroll);
42+ const float vDelta = mir_pointer_event_axis_value(pev, mir_pointer_axis_vscroll);
43+
44+ if (hDelta != 0 || vDelta != 0) {
45+ const QPoint angleDelta = QPoint(hDelta * 15, vDelta * 15);
46+ QWindowSystemInterface::handleWheelEvent(window, timestamp, localPoint, localPoint,
47+ QPoint(), angleDelta, modifiers, Qt::ScrollUpdate);
48+ } else {
49+ auto buttons = extract_buttons(pev);
50+ QWindowSystemInterface::handleMouseEvent(window, timestamp, localPoint, localPoint /* Should we omit global point instead? */,
51+ buttons, modifiers);
52+ }
53+ break;
54+ }
55+ case mir_pointer_action_enter:
56+ QWindowSystemInterface::handleEnterEvent(window, localPoint, localPoint);
57+ break;
58+ case mir_pointer_action_leave:
59+ QWindowSystemInterface::handleLeaveEvent(window);
60+ break;
61+ default:
62+ DLOG("Unrecognized pointer event");
63+ }
64 }
65
66 #if (LOG_EVENTS != 0)

Subscribers

People subscribed via source and target branches