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

Unified Diff: ui/base/x/events_x.cc

Issue 11411247: Support 3f swipe for tab scrubbing (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 1 month 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/base/x/events_x.cc
diff --git a/ui/base/x/events_x.cc b/ui/base/x/events_x.cc
index e82a06a4afd73765d217125cdb05f19bc3ec2d9f..9aa84d7702ff49f3590af15c2cb8253f50281cbe 100644
--- a/ui/base/x/events_x.cc
+++ b/ui/base/x/events_x.cc
@@ -40,6 +40,8 @@
#define AXIS_LABEL_PROP_ABS_FLING_Y "Abs Fling Y Velocity"
#define AXIS_LABEL_PROP_ABS_FLING_STATE "Abs Fling State"
+#define AXIS_LABEL_PROP_ABS_FINGER_COUNT "Abs Finger Count"
+
// New versions of the valuators, with double values instead of fixed point.
#define AXIS_LABEL_PROP_ABS_DBL_START_TIME "Abs Dbl Start Timestamp"
#define AXIS_LABEL_PROP_ABS_DBL_END_TIME "Abs Dbl End Timestamp"
@@ -66,6 +68,7 @@ const char* kCMTCachedAtoms[] = {
AXIS_LABEL_PROP_ABS_DBL_FLING_VX,
AXIS_LABEL_PROP_ABS_DBL_FLING_VY,
AXIS_LABEL_PROP_ABS_FLING_STATE,
+ AXIS_LABEL_PROP_ABS_FINGER_COUNT,
NULL
};
@@ -121,6 +124,7 @@ class CMTEventData {
Atom fling_vy = atom_cache_.GetAtom(AXIS_LABEL_PROP_ABS_FLING_Y);
Atom fling_vy_dbl = atom_cache_.GetAtom(AXIS_LABEL_PROP_ABS_DBL_FLING_VY);
Atom fling_state = atom_cache_.GetAtom(AXIS_LABEL_PROP_ABS_FLING_STATE);
+ Atom finger_count = atom_cache_.GetAtom(AXIS_LABEL_PROP_ABS_FINGER_COUNT);
for (int i = 0; i < count; ++i) {
XIDeviceInfo* info = info_list + i;
@@ -149,6 +153,9 @@ class CMTEventData {
} else if (v->label == y_axis) {
valuators.scroll_y = number;
is_cmt = true;
+ } else if (v->label == finger_count) {
+ valuators.finger_count = number;
+ is_cmt = true;
} else if (v->label == start_time) {
valuators.start_time = number;
is_cmt = true;
@@ -222,13 +229,18 @@ class CMTEventData {
// Returns true if this is a scroll event (a motion event with the necessary
// valuators. Also returns the offsets. |x_offset| and |y_offset| can be
// NULL.
- bool GetScrollOffsets(const XEvent& xev, float* x_offset, float* y_offset) {
+ bool GetScrollOffsets(const XEvent& xev,
+ float* x_offset,
+ float* y_offset,
+ int* finger_count) {
XIDeviceEvent* xiev = static_cast<XIDeviceEvent*>(xev.xcookie.data);
if (x_offset)
*x_offset = 0;
if (y_offset)
*y_offset = 0;
+ if (finger_count)
+ *finger_count = 2;
const int sourceid = xiev->sourceid;
if (!cmt_devices_[sourceid])
@@ -250,6 +262,8 @@ class CMTEventData {
*x_offset = *valuators * natural_scroll_factor;
else if (y_offset && v.scroll_y == i)
*y_offset = *valuators * natural_scroll_factor;
+ else if (finger_count && v.finger_count == i)
+ *finger_count = static_cast<int>(*valuators);
valuators++;
}
}
@@ -358,6 +372,7 @@ class CMTEventData {
int max;
int scroll_x;
int scroll_y;
+ int finger_count;
int start_time;
int end_time;
int fling_vx;
@@ -373,6 +388,7 @@ class CMTEventData {
: max(-1),
scroll_x(-1),
scroll_y(-1),
+ finger_count(-1),
start_time(-1),
end_time(-1),
fling_vx(-1),
@@ -749,7 +765,7 @@ EventType EventTypeFromNative(const base::NativeEvent& native_event) {
bool is_cancel;
if (GetFlingData(native_event, &vx, &vy, &is_cancel)) {
return is_cancel ? ET_SCROLL_FLING_CANCEL : ET_SCROLL_FLING_START;
- } else if (GetScrollOffsets(native_event, NULL, NULL)) {
+ } else if (GetScrollOffsets(native_event, NULL, NULL, NULL)) {
return ET_SCROLL;
} else if (GetButtonMaskForX2Event(xievent)) {
return ET_MOUSE_DRAGGED;
@@ -1066,9 +1082,10 @@ float GetTouchForce(const base::NativeEvent& native_event) {
bool GetScrollOffsets(const base::NativeEvent& native_event,
float* x_offset,
- float* y_offset) {
+ float* y_offset,
+ int* finger_count) {
return CMTEventData::GetInstance()->GetScrollOffsets(
- *native_event, x_offset, y_offset);
+ *native_event, x_offset, y_offset, finger_count);
}
bool GetFlingData(const base::NativeEvent& native_event,

Powered by Google App Engine
This is Rietveld 408576698