Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(520)

Unified Diff: ui/events/android/motion_event_android.cc

Issue 2054193002: Android mouse events shouldn't appear as TouchEvents (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added meta_state plumbing. Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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() {

Powered by Google App Engine
This is Rietveld 408576698