Index: ui/events/android/motion_event_android.cc |
diff --git a/ui/events/android/motion_event_android.cc b/ui/events/android/motion_event_android.cc |
index bf1fc53f8cbfecf0be5362c6744d8114d6a0db3e..252277c2dab4c233ae0d0943f7672160b3981134 100644 |
--- a/ui/events/android/motion_event_android.cc |
+++ b/ui/events/android/motion_event_android.cc |
@@ -78,8 +78,9 @@ int FromAndroidButtonState(int button_state) { |
return result; |
} |
-int FromAndroidMetaState(int meta_state) { |
+int ToEventFlags(int meta_state, int button_state) { |
int flags = ui::EF_NONE; |
+ |
if ((meta_state & AMETA_SHIFT_ON) != 0) |
flags |= ui::EF_SHIFT_DOWN; |
if ((meta_state & AMETA_CTRL_ON) != 0) |
@@ -90,6 +91,22 @@ int FromAndroidMetaState(int meta_state) { |
flags |= ui::EF_COMMAND_DOWN; |
if ((meta_state & AMETA_CAPS_LOCK_ON) != 0) |
flags |= ui::EF_CAPS_LOCK_ON; |
+ |
+ if ((button_state & BUTTON_BACK) != 0) |
+ flags |= ui::EF_BACK_MOUSE_BUTTON; |
+ if ((button_state & BUTTON_FORWARD) != 0) |
+ flags |= ui::EF_FORWARD_MOUSE_BUTTON; |
+ if ((button_state & BUTTON_PRIMARY) != 0) |
+ flags |= ui::EF_LEFT_MOUSE_BUTTON; |
+ if ((button_state & BUTTON_SECONDARY) != 0) |
+ flags |= ui::EF_RIGHT_MOUSE_BUTTON; |
+ if ((button_state & BUTTON_TERTIARY) != 0) |
+ flags |= ui::EF_MIDDLE_MOUSE_BUTTON; |
+ if ((button_state & BUTTON_STYLUS_PRIMARY) != 0) |
+ flags |= ui::EF_LEFT_MOUSE_BUTTON; |
+ if ((button_state & BUTTON_STYLUS_SECONDARY) != 0) |
+ flags |= ui::EF_RIGHT_MOUSE_BUTTON; |
+ |
return flags; |
} |
@@ -159,11 +176,11 @@ MotionEventAndroid::MotionEventAndroid(float pix_to_dip, |
jint history_size, |
jint action_index, |
jint android_button_state, |
- jint meta_state, |
+ jint android_meta_state, |
jfloat raw_offset_x_pixels, |
jfloat raw_offset_y_pixels, |
- const Pointer& pointer0, |
- const Pointer& pointer1) |
+ const Pointer* const pointer0, |
+ const Pointer* const pointer1) |
: pix_to_dip_(pix_to_dip), |
cached_time_(FromAndroidTime(time_ms)), |
cached_action_(FromAndroidAction(android_action)), |
@@ -171,18 +188,20 @@ MotionEventAndroid::MotionEventAndroid(float pix_to_dip, |
cached_history_size_(ToValidHistorySize(history_size, cached_action_)), |
cached_action_index_(action_index), |
cached_button_state_(FromAndroidButtonState(android_button_state)), |
- cached_flags_(FromAndroidMetaState(meta_state)), |
+ cached_flags_(ToEventFlags(android_meta_state, android_button_state)), |
cached_raw_position_offset_(ToDips(raw_offset_x_pixels), |
ToDips(raw_offset_y_pixels)), |
unique_event_id_(ui::GetNextTouchEventId()) { |
- DCHECK_GT(pointer_count, 0); |
+ DCHECK_GT(cached_pointer_count_, 0U); |
+ DCHECK(cached_pointer_count_ == 1 || pointer1); |
event_.Reset(env, event); |
if (cached_pointer_count_ > MAX_POINTERS_TO_CACHE || cached_history_size_ > 0) |
DCHECK(event_.obj()); |
- cached_pointers_[0] = FromAndroidPointer(pointer0); |
- cached_pointers_[1] = FromAndroidPointer(pointer1); |
+ cached_pointers_[0] = FromAndroidPointer(*pointer0); |
+ if (cached_pointer_count_ > 1) |
aelias_OOO_until_Jul13
2016/10/20 23:26:29
This looks kind of weird (I understand you expect
mustaq
2016/10/21 19:19:08
Just realized that the name is a bit confusing her
aelias_OOO_until_Jul13
2016/10/21 21:26:54
OK then, fine as is.
|
+ cached_pointers_[1] = FromAndroidPointer(*pointer1); |
} |
MotionEventAndroid::~MotionEventAndroid() { |