Mir

Merge lp:~brandontschaefer/mir/lp-1252498-fix into lp:mir

Proposed by Brandon Schaefer
Status: Merged
Approved by: Daniel van Vugt
Approved revision: no longer in the source branch.
Merged at revision: 1230
Proposed branch: lp:~brandontschaefer/mir/lp-1252498-fix
Merge into: lp:mir
Diff against target: 97 lines (+21/-1)
3 files modified
include/shared/mir_toolkit/event.h (+9/-1)
src/shared/input/android/android_input_lexicon.cpp (+3/-0)
tests/unit-tests/input/android/test_android_input_lexicon.cpp (+9/-0)
To merge this branch: bzr merge lp:~brandontschaefer/mir/lp-1252498-fix
Reviewer Review Type Date Requested Status
Daniel van Vugt Approve
PS Jenkins bot (community) continuous-integration Approve
Kevin DuBois (community) Approve
Review via email: mp+195684@code.launchpad.net

Commit message

Adds support to the MirMotionEvent under pointer_coordinates called tool_type. This will allow clients to tell what type of tool is being used, from mouse/finger/etc.

Description of the change

The mir event api does not expose what type of tool is for each pointer_cord. Some toolkits need to know the difference between different types of tools.

Adds a new type to pointer_cords, removing an 'int unused' and replacing it with an enum MirMotionToolType.

Adds tests for single pointer events, and multiple.

To post a comment you must log in.
Revision history for this message
Kevin DuBois (kdub) wrote :

looks okay to me

review: Approve
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Interesting that we explicitly support multiple simultaneous tools touching the screen :)

review: Approve
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

I actually came up with a need for this myself yesterday, so thanks.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'include/shared/mir_toolkit/event.h'
2--- include/shared/mir_toolkit/event.h 2013-10-22 01:36:21 +0000
3+++ include/shared/mir_toolkit/event.h 2013-11-18 22:39:55 +0000
4@@ -109,6 +109,14 @@
5 mir_motion_button_forward = 1 << 4
6 } MirMotionButton;
7
8+typedef enum {
9+ mir_motion_tool_type_unknown = 0,
10+ mir_motion_tool_type_finger = 1,
11+ mir_motion_tool_type_stylus = 2,
12+ mir_motion_tool_type_mouse = 3,
13+ mir_motion_tool_type_eraser = 4
14+} MirMotionToolType;
15+
16 typedef struct
17 {
18 MirEventType type;
19@@ -164,8 +172,8 @@
20 float orientation;
21 float vscroll;
22 float hscroll;
23+ MirMotionToolType tool_type;
24
25- int unused0;
26 int unused1;
27 int unused2;
28 int unused3;
29
30=== modified file 'src/shared/input/android/android_input_lexicon.cpp'
31--- src/shared/input/android/android_input_lexicon.cpp 2013-10-22 04:16:22 +0000
32+++ src/shared/input/android/android_input_lexicon.cpp 2013-11-18 22:39:55 +0000
33@@ -80,6 +80,9 @@
34
35 mir_event.motion.pointer_coordinates[i].hscroll =
36 mev->getRawAxisValue(AMOTION_EVENT_AXIS_HSCROLL, i);
37+
38+ mir_event.motion.pointer_coordinates[i].tool_type =
39+ static_cast<MirMotionToolType>(mev->getToolType(i));
40 }
41 break;
42 }
43
44=== modified file 'tests/unit-tests/input/android/test_android_input_lexicon.cpp'
45--- tests/unit-tests/input/android/test_android_input_lexicon.cpp 2013-10-23 18:00:50 +0000
46+++ tests/unit-tests/input/android/test_android_input_lexicon.cpp 2013-11-18 22:39:55 +0000
47@@ -108,6 +108,7 @@
48 const float orientation = 700.0;
49 const float vscroll = 800.0;
50 const float hscroll = 900.0;
51+ const MirMotionToolType tool_type = mir_motion_tool_type_mouse;
52
53 pointer_coords.setAxisValue(AMOTION_EVENT_AXIS_X, x_axis);
54 pointer_coords.setAxisValue(AMOTION_EVENT_AXIS_Y, y_axis);
55@@ -118,6 +119,7 @@
56 pointer_coords.setAxisValue(AMOTION_EVENT_AXIS_ORIENTATION, orientation);
57 pointer_coords.setAxisValue(AMOTION_EVENT_AXIS_VSCROLL, vscroll);
58 pointer_coords.setAxisValue(AMOTION_EVENT_AXIS_HSCROLL, hscroll);
59+ pointer_properties.toolType = tool_type;
60
61 android_motion_ev->initialize(device_id, source_id, action, flags, edge_flags,
62 meta_state, button_state, x_offset, y_offset,
63@@ -165,6 +167,7 @@
64 EXPECT_EQ(mir_pointer_coords->orientation, orientation);
65 EXPECT_EQ(mir_pointer_coords->vscroll, vscroll);
66 EXPECT_EQ(mir_pointer_coords->hscroll, hscroll);
67+ EXPECT_EQ(mir_pointer_coords->tool_type, tool_type);
68
69
70 delete android_motion_ev;
71@@ -208,6 +211,9 @@
72 const float vscroll[2] = {800.0, 8000.0};
73 const float hscroll[2] = {900.0, 9000.0};
74
75+ const MirMotionToolType tool_types[2] = {mir_motion_tool_type_mouse,
76+ mir_motion_tool_type_finger};
77+
78 for (size_t p = 0; p < pointer_count; p++)
79 {
80 pointer_properties[p].id = pointer_id[p];
81@@ -227,6 +233,8 @@
82 vscroll[p]);
83 pointer_coords[p].setAxisValue(AMOTION_EVENT_AXIS_HSCROLL,
84 hscroll[p]);
85+
86+ pointer_properties[p].toolType = tool_types[p];
87 }
88
89 android_motion_ev->initialize(device_id, source_id, action, flags,
90@@ -276,6 +284,7 @@
91 EXPECT_EQ(pointer[p].orientation, orientation[p]);
92 EXPECT_EQ(pointer[p].vscroll, vscroll[p]);
93 EXPECT_EQ(pointer[p].hscroll, hscroll[p]);
94+ EXPECT_EQ(pointer[p].tool_type, tool_types[p]);
95 }
96
97 delete android_motion_ev;

Subscribers

People subscribed via source and target branches