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..45c1248567614e7062aa0e0d135adb9b544fb82d 100644 |
--- a/ash/sticky_keys/sticky_keys_controller.cc |
+++ b/ash/sticky_keys/sticky_keys_controller.cc |
@@ -69,10 +69,18 @@ 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()); |
+ aura::Window* source = static_cast<aura::Window*>(event->target()); |
+ ui::MouseWheelEvent new_event(*static_cast<ui::MouseWheelEvent*>(event), |
+ source, |
+ source->GetRootWindow()); |
+ // 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()); |
+ 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); |
} |
} |