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

Unified Diff: ui/aura/root_window_host_linux.cc

Issue 8907005: Add support for new scroll valuators coming from CMT (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Removed comment Created 9 years 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
« no previous file with comments | « ui/aura/root_window.cc ('k') | ui/base/events.h » ('j') | ui/base/events.h » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/aura/root_window_host_linux.cc
diff --git a/ui/aura/root_window_host_linux.cc b/ui/aura/root_window_host_linux.cc
index a2c4a731a11e4153a0c838c901de236f53c38814..6ed655b33cbc1cda7c982457754d05b7c2f9a619 100644
--- a/ui/aura/root_window_host_linux.cc
+++ b/ui/aura/root_window_host_linux.cc
@@ -197,7 +197,8 @@ int CoalescePendingXIMotionEvents(const XEvent* xev, XEvent* last_event) {
}
if (next_event.type == GenericEvent &&
- next_event.xgeneric.evtype == XI_Motion) {
+ next_event.xgeneric.evtype == XI_Motion &&
+ !ui::GetScrollOffsets(&next_event, NULL, NULL)) {
XIDeviceEvent* next_xievent =
static_cast<XIDeviceEvent*>(next_event.xcookie.data);
// Confirm that the motion event is targeted at the same window
@@ -343,11 +344,8 @@ RootWindowHostLinux::RootWindowHostLinux(const gfx::Rect& bounds)
XSelectInput(xdisplay_, x_root_window_, StructureNotifyMask);
XFlush(xdisplay_);
- // TODO(sad): Re-enable once crbug.com/106516 is fixed.
-#if 0
if (base::MessagePumpForUI::HasXInput2())
ui::TouchFactory::GetInstance()->SetupXI2ForXWindow(xwindow_);
-#endif
base::MessagePumpX::SetDefaultDispatcher(this);
MessageLoopForUI::current()->AddDestructionObserver(this);
@@ -422,17 +420,19 @@ base::MessagePumpDispatcher::DispatchStatus RootWindowHostLinux::Dispatch(
if (!factory->ShouldProcessXI2Event(xev))
break;
+ // Update the device list if necessary.
+ if (xev->xgeneric.evtype == XI_HierarchyChanged) {
+ ui::UpdateDeviceList();
+ handled = true;
+ break;
+ }
+
+ ui::EventType type = ui::EventTypeFromNative(xev);
// If this is a motion event we want to coalesce all pending motion
// events that are at the top of the queue.
XEvent last_event;
int num_coalesced = 0;
- if (xev->xgeneric.evtype == XI_Motion) {
- num_coalesced = CoalescePendingXIMotionEvents(xev, &last_event);
- if (num_coalesced > 0)
- xev = &last_event;
- }
- ui::EventType type = ui::EventTypeFromNative(xev);
switch (type) {
case ui::ET_TOUCH_PRESSED:
case ui::ET_TOUCH_RELEASED:
@@ -441,10 +441,16 @@ base::MessagePumpDispatcher::DispatchStatus RootWindowHostLinux::Dispatch(
handled = root_window_->DispatchTouchEvent(&touchev);
break;
}
+ case ui::ET_MOUSE_MOVED:
+ case ui::ET_MOUSE_DRAGGED: {
+ // If this is a motion event we want to coalesce all pending motion
+ // events that are at the top of the queue.
+ num_coalesced = CoalescePendingXIMotionEvents(xev, &last_event);
+ if (num_coalesced > 0)
+ xev = &last_event;
+ }
case ui::ET_MOUSE_PRESSED:
case ui::ET_MOUSE_RELEASED:
- case ui::ET_MOUSE_MOVED:
- case ui::ET_MOUSE_DRAGGED:
case ui::ET_MOUSEWHEEL:
case ui::ET_MOUSE_ENTERED:
case ui::ET_MOUSE_EXITED: {
@@ -452,6 +458,11 @@ base::MessagePumpDispatcher::DispatchStatus RootWindowHostLinux::Dispatch(
handled = root_window_->DispatchMouseEvent(&mouseev);
break;
}
+ case ui::ET_SCROLL: {
+ ScrollEvent scrollev(xev);
+ handled = root_window_->DispatchScrollEvent(&scrollev);
+ break;
+ }
case ui::ET_UNKNOWN:
handled = false;
break;
« no previous file with comments | « ui/aura/root_window.cc ('k') | ui/base/events.h » ('j') | ui/base/events.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698