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

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

Issue 688253002: Implemented smooth scrolling using xinput2 in X11. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed scrolling after scrolling on another window Created 6 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/events/x/events_x.cc
diff --git a/ui/events/x/events_x.cc b/ui/events/x/events_x.cc
index e6fb3120d3e095b61fb387351a0be66f2fae5835..1dee583fd609f159e81451af894d9e686d370e7b 100644
--- a/ui/events/x/events_x.cc
+++ b/ui/events/x/events_x.cc
@@ -444,6 +444,9 @@ EventType EventTypeFromNative(const base::NativeEvent& native_event) {
return devices->IsTouchpadXInputEvent(native_event) ? ET_SCROLL
: ET_MOUSEWHEEL;
}
+ if (devices->IsScrollClassEvent(native_event)) {
+ return ET_MOUSEWHEEL;
+ }
sadrul 2014/12/22 17:11:12 no {}
if (devices->IsCMTMetricsEvent(native_event))
return ET_UMA_DATA;
if (GetButtonMaskForX2Event(xievent))
@@ -716,18 +719,35 @@ gfx::Vector2d GetMouseWheelOffset(const base::NativeEvent& native_event) {
static_cast<int>(y_offset));
}
+ double x_scroll_offset, y_scroll_offset;
+ if (DeviceDataManagerX11::GetInstance()->IsScrollClassEvent(native_event)) {
+ DeviceDataManagerX11::GetInstance()->GetScrollClassOffsets(
+ native_event,
+ &x_scroll_offset, &y_scroll_offset);
+ return gfx::Vector2d(
+ static_cast<int>(x_scroll_offset * kWheelScrollAmount),
+ static_cast<int>(y_scroll_offset * kWheelScrollAmount));
+ }
+
sadrul 2014/12/22 17:11:12 Can this block move into GetScrollOffsets() instea
int button = native_event->type == GenericEvent ?
EventButtonFromNative(native_event) : native_event->xbutton.button;
+ bool verticalScrollClass =
+ DeviceDataManagerX11::GetInstance()
+ ->IsScrollClassVerticalDevice(native_event);
+ bool horizontalScrollClass =
sadrul 2014/12/22 17:11:12 Should be vertical_scroll_class etc.
+ DeviceDataManagerX11::GetInstance()
+ ->IsScrollClassHorizontalDevice(native_event);
+
switch (button) {
case 4:
- return gfx::Vector2d(0, kWheelScrollAmount);
+ return gfx::Vector2d(0, verticalScrollClass ? 0 : kWheelScrollAmount);
case 5:
- return gfx::Vector2d(0, -kWheelScrollAmount);
+ return gfx::Vector2d(0, verticalScrollClass ? 0 : -kWheelScrollAmount);
case 6:
- return gfx::Vector2d(kWheelScrollAmount, 0);
+ return gfx::Vector2d(horizontalScrollClass ? 0 : kWheelScrollAmount, 0);
case 7:
- return gfx::Vector2d(-kWheelScrollAmount, 0);
+ return gfx::Vector2d(horizontalScrollClass ? 0 : -kWheelScrollAmount, 0);
default:
return gfx::Vector2d();
}

Powered by Google App Engine
This is Rietveld 408576698