| Index: ui/base/x/events_x.cc
|
| diff --git a/ui/base/x/events_x.cc b/ui/base/x/events_x.cc
|
| index 4f2db853d7cb08892f4f8cb9a49e6dc114fc288a..1ccec4b1a5bbc6e1740e11c12586d374ccb60f26 100644
|
| --- a/ui/base/x/events_x.cc
|
| +++ b/ui/base/x/events_x.cc
|
| @@ -11,6 +11,7 @@
|
| #include "base/logging.h"
|
| #include "ui/base/keycodes/keyboard_code_conversion_x.h"
|
| #include "ui/base/touch/touch_factory.h"
|
| +#include "ui/base/x/scroll_factory.h"
|
| #include "ui/base/x/x11_util.h"
|
| #include "ui/gfx/point.h"
|
|
|
| @@ -192,21 +193,22 @@ EventType EventTypeFromNative(const base::NativeEvent& native_event) {
|
| static_cast<XIDeviceEvent*>(native_event->xcookie.data);
|
| if (TouchFactory::GetInstance()->IsTouchDevice(xievent->sourceid))
|
| return GetTouchEventType(native_event);
|
| - int button = EventButtonFromNative(native_event);
|
| switch (xievent->evtype) {
|
| case XI_ButtonPress:
|
| - if (button >= kMinWheelButton &&
|
| - button <= kMaxWheelButton)
|
| - return ET_MOUSEWHEEL;
|
| - return ET_MOUSE_PRESSED;
|
| - case XI_ButtonRelease:
|
| - if (button >= kMinWheelButton &&
|
| - button <= kMaxWheelButton)
|
| + case XI_ButtonRelease: {
|
| + int button = EventButtonFromNative(native_event);
|
| + if (button >= kMinWheelButton && button <= kMaxWheelButton)
|
| return ET_MOUSEWHEEL;
|
| - return ET_MOUSE_RELEASED;
|
| + return xievent->evtype == XI_ButtonPress ?
|
| + ET_MOUSE_PRESSED : ET_MOUSE_RELEASED;
|
| + }
|
| case XI_Motion:
|
| - return GetButtonMaskForX2Event(xievent) ?
|
| - ET_MOUSE_DRAGGED : ET_MOUSE_MOVED;
|
| + if (GetScrollOffsets(native_event, NULL, NULL))
|
| + return ET_SCROLL;
|
| + else if (GetButtonMaskForX2Event(xievent))
|
| + return ET_MOUSE_DRAGGED;
|
| + else
|
| + return ET_MOUSE_MOVED;
|
| }
|
| }
|
| default:
|
| @@ -405,6 +407,13 @@ float GetTouchForce(const base::NativeEvent& native_event) {
|
| return force;
|
| }
|
|
|
| +bool GetScrollOffsets(const base::NativeEvent& native_event,
|
| + float* x_offset,
|
| + float* y_offset) {
|
| + return ui::ScrollFactory::GetInstance()->GetScrollOffsets(
|
| + *native_event, x_offset, y_offset);
|
| +}
|
| +
|
| base::NativeEvent CreateNoopEvent() {
|
| static XEvent* noop = NULL;
|
| if (!noop) {
|
|
|