Index: ash/sticky_keys/sticky_keys_controller.cc |
diff --git a/ash/sticky_keys/sticky_keys_controller.cc b/ash/sticky_keys/sticky_keys_controller.cc |
index e5bb0afe2483c32c1dbd4a20dfff9f6583cf4c8b..f313e7303656f5e5cb5151515ca31e464ba32a76 100644 |
--- a/ash/sticky_keys/sticky_keys_controller.cc |
+++ b/ash/sticky_keys/sticky_keys_controller.cc |
@@ -69,11 +69,31 @@ void StickyKeysHandlerDelegateImpl::DispatchMouseEvent(ui::MouseEvent* event, |
DCHECK(target); |
// We need to send a new, untransformed mouse event to the host. |
if (event->IsMouseWheelEvent()) { |
- ui::MouseWheelEvent new_event(event->native_event()); |
- DispatchEvent(&new_event, target); |
+ if (event->HasNativeEvent()) { |
+ ui::MouseWheelEvent new_event(event->native_event()); |
+ DispatchEvent(&new_event, target); |
+ } else { |
+ aura::Window* source = static_cast<aura::Window*>(event->target()); |
+ ui::MouseWheelEvent new_event(*static_cast<ui::MouseWheelEvent*>(event), |
+ source, |
+ source->GetRootWindow(), |
+ event->type(), |
+ event->flags()); |
sadrul
2014/04/07 21:57:33
It looks like this ctor for MouseWheelEvent is not
Tim Song
2014/04/07 22:23:27
Done.
|
+ // Transform the location back to host coordinates before dispatching. |
+ new_event.UpdateForRootTransform(source->GetHost()->GetRootTransform()); |
+ DispatchEvent(&new_event, target); |
+ } |
} else { |
- ui::MouseEvent new_event(event->native_event()); |
- DispatchEvent(&new_event, target); |
+ if (event->HasNativeEvent()) { |
+ ui::MouseEvent new_event(event->native_event()); |
+ DispatchEvent(&new_event, target); |
+ } else { |
+ aura::Window* source = static_cast<aura::Window*>(event->target()); |
+ ui::MouseEvent new_event(*event, source, source->GetRootWindow()); |
+ // Transform the location back to host coordinates before dispatching. |
+ new_event.UpdateForRootTransform(source->GetHost()->GetRootTransform()); |
+ DispatchEvent(&new_event, target); |
+ } |
sadrul
2014/04/07 21:57:33
You can always just create the new event out of th
Tim Song
2014/04/07 22:23:27
Done. You're right, it should be equivalent in thi
|
} |
} |