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
=== modified file 'include/shared/mir_toolkit/event.h'
--- include/shared/mir_toolkit/event.h 2013-10-22 01:36:21 +0000
+++ include/shared/mir_toolkit/event.h 2013-11-18 22:39:55 +0000
@@ -109,6 +109,14 @@
109 mir_motion_button_forward = 1 << 4109 mir_motion_button_forward = 1 << 4
110} MirMotionButton;110} MirMotionButton;
111111
112typedef enum {
113 mir_motion_tool_type_unknown = 0,
114 mir_motion_tool_type_finger = 1,
115 mir_motion_tool_type_stylus = 2,
116 mir_motion_tool_type_mouse = 3,
117 mir_motion_tool_type_eraser = 4
118} MirMotionToolType;
119
112typedef struct120typedef struct
113{121{
114 MirEventType type;122 MirEventType type;
@@ -164,8 +172,8 @@
164 float orientation;172 float orientation;
165 float vscroll;173 float vscroll;
166 float hscroll;174 float hscroll;
175 MirMotionToolType tool_type;
167176
168 int unused0;
169 int unused1;177 int unused1;
170 int unused2;178 int unused2;
171 int unused3;179 int unused3;
172180
=== modified file 'src/shared/input/android/android_input_lexicon.cpp'
--- src/shared/input/android/android_input_lexicon.cpp 2013-10-22 04:16:22 +0000
+++ src/shared/input/android/android_input_lexicon.cpp 2013-11-18 22:39:55 +0000
@@ -80,6 +80,9 @@
8080
81 mir_event.motion.pointer_coordinates[i].hscroll =81 mir_event.motion.pointer_coordinates[i].hscroll =
82 mev->getRawAxisValue(AMOTION_EVENT_AXIS_HSCROLL, i);82 mev->getRawAxisValue(AMOTION_EVENT_AXIS_HSCROLL, i);
83
84 mir_event.motion.pointer_coordinates[i].tool_type =
85 static_cast<MirMotionToolType>(mev->getToolType(i));
83 }86 }
84 break;87 break;
85 }88 }
8689
=== modified file 'tests/unit-tests/input/android/test_android_input_lexicon.cpp'
--- tests/unit-tests/input/android/test_android_input_lexicon.cpp 2013-10-23 18:00:50 +0000
+++ tests/unit-tests/input/android/test_android_input_lexicon.cpp 2013-11-18 22:39:55 +0000
@@ -108,6 +108,7 @@
108 const float orientation = 700.0;108 const float orientation = 700.0;
109 const float vscroll = 800.0;109 const float vscroll = 800.0;
110 const float hscroll = 900.0;110 const float hscroll = 900.0;
111 const MirMotionToolType tool_type = mir_motion_tool_type_mouse;
111112
112 pointer_coords.setAxisValue(AMOTION_EVENT_AXIS_X, x_axis);113 pointer_coords.setAxisValue(AMOTION_EVENT_AXIS_X, x_axis);
113 pointer_coords.setAxisValue(AMOTION_EVENT_AXIS_Y, y_axis);114 pointer_coords.setAxisValue(AMOTION_EVENT_AXIS_Y, y_axis);
@@ -118,6 +119,7 @@
118 pointer_coords.setAxisValue(AMOTION_EVENT_AXIS_ORIENTATION, orientation);119 pointer_coords.setAxisValue(AMOTION_EVENT_AXIS_ORIENTATION, orientation);
119 pointer_coords.setAxisValue(AMOTION_EVENT_AXIS_VSCROLL, vscroll);120 pointer_coords.setAxisValue(AMOTION_EVENT_AXIS_VSCROLL, vscroll);
120 pointer_coords.setAxisValue(AMOTION_EVENT_AXIS_HSCROLL, hscroll);121 pointer_coords.setAxisValue(AMOTION_EVENT_AXIS_HSCROLL, hscroll);
122 pointer_properties.toolType = tool_type;
121123
122 android_motion_ev->initialize(device_id, source_id, action, flags, edge_flags,124 android_motion_ev->initialize(device_id, source_id, action, flags, edge_flags,
123 meta_state, button_state, x_offset, y_offset,125 meta_state, button_state, x_offset, y_offset,
@@ -165,6 +167,7 @@
165 EXPECT_EQ(mir_pointer_coords->orientation, orientation);167 EXPECT_EQ(mir_pointer_coords->orientation, orientation);
166 EXPECT_EQ(mir_pointer_coords->vscroll, vscroll);168 EXPECT_EQ(mir_pointer_coords->vscroll, vscroll);
167 EXPECT_EQ(mir_pointer_coords->hscroll, hscroll);169 EXPECT_EQ(mir_pointer_coords->hscroll, hscroll);
170 EXPECT_EQ(mir_pointer_coords->tool_type, tool_type);
168171
169172
170 delete android_motion_ev;173 delete android_motion_ev;
@@ -208,6 +211,9 @@
208 const float vscroll[2] = {800.0, 8000.0};211 const float vscroll[2] = {800.0, 8000.0};
209 const float hscroll[2] = {900.0, 9000.0};212 const float hscroll[2] = {900.0, 9000.0};
210213
214 const MirMotionToolType tool_types[2] = {mir_motion_tool_type_mouse,
215 mir_motion_tool_type_finger};
216
211 for (size_t p = 0; p < pointer_count; p++)217 for (size_t p = 0; p < pointer_count; p++)
212 {218 {
213 pointer_properties[p].id = pointer_id[p];219 pointer_properties[p].id = pointer_id[p];
@@ -227,6 +233,8 @@
227 vscroll[p]);233 vscroll[p]);
228 pointer_coords[p].setAxisValue(AMOTION_EVENT_AXIS_HSCROLL,234 pointer_coords[p].setAxisValue(AMOTION_EVENT_AXIS_HSCROLL,
229 hscroll[p]);235 hscroll[p]);
236
237 pointer_properties[p].toolType = tool_types[p];
230 }238 }
231239
232 android_motion_ev->initialize(device_id, source_id, action, flags,240 android_motion_ev->initialize(device_id, source_id, action, flags,
@@ -276,6 +284,7 @@
276 EXPECT_EQ(pointer[p].orientation, orientation[p]);284 EXPECT_EQ(pointer[p].orientation, orientation[p]);
277 EXPECT_EQ(pointer[p].vscroll, vscroll[p]);285 EXPECT_EQ(pointer[p].vscroll, vscroll[p]);
278 EXPECT_EQ(pointer[p].hscroll, hscroll[p]);286 EXPECT_EQ(pointer[p].hscroll, hscroll[p]);
287 EXPECT_EQ(pointer[p].tool_type, tool_types[p]);
279 }288 }
280289
281 delete android_motion_ev;290 delete android_motion_ev;

Subscribers

People subscribed via source and target branches