| Index: content/browser/renderer_host/web_input_event_aura.cc
|
| ===================================================================
|
| --- content/browser/renderer_host/web_input_event_aura.cc (revision 160403)
|
| +++ content/browser/renderer_host/web_input_event_aura.cc (working copy)
|
| @@ -21,7 +21,6 @@
|
| WebKit::WebTouchPoint* UpdateWebTouchEventFromNativeEvent(
|
| base::NativeEvent native_event, WebKit::WebTouchEvent* web_event);
|
| #else
|
| -WebKit::WebMouseEvent MakeWebMouseEventFromAuraEvent(ui::MouseEvent* event);
|
| WebKit::WebMouseWheelEvent MakeWebMouseWheelEventFromAuraEvent(
|
| ui::MouseWheelEvent* event);
|
| WebKit::WebMouseWheelEvent MakeWebMouseWheelEventFromAuraEvent(
|
| @@ -36,6 +35,8 @@
|
| ui::TouchEvent* event, WebKit::WebTouchEvent* web_event);
|
| #endif
|
|
|
| +WebKit::WebMouseEvent MakeWebMouseEventFromAuraEvent(ui::MouseEvent* event);
|
| +
|
| // General approach:
|
| //
|
| // ui::Event only carries a subset of possible event data provided to Aura by
|
| @@ -60,14 +61,17 @@
|
| //
|
|
|
| WebKit::WebMouseEvent MakeWebMouseEvent(ui::MouseEvent* event) {
|
| -#if defined(OS_WIN)
|
| // Construct an untranslated event from the platform event data.
|
| WebKit::WebMouseEvent webkit_event =
|
| - MakeUntranslatedWebMouseEventFromNativeEvent(event->native_event());
|
| +#if defined(OS_WIN)
|
| + // On Windows we have WM_ events comming from desktop and pure aura
|
| + // events comming from metro mode.
|
| + event->native_event().message ?
|
| + MakeUntranslatedWebMouseEventFromNativeEvent(event->native_event()) :
|
| + MakeWebMouseEventFromAuraEvent(event);
|
| #else
|
| - WebKit::WebMouseEvent webkit_event = MakeWebMouseEventFromAuraEvent(event);
|
| + MakeWebMouseEventFromAuraEvent(event);
|
| #endif
|
| -
|
| // Replace the event's coordinate fields with translated position data from
|
| // |event|.
|
| webkit_event.windowX = webkit_event.x = event->x();
|
| @@ -193,4 +197,60 @@
|
| #endif
|
| }
|
|
|
| +int EventFlagsToWebEventModifiers(int flags) {
|
| + int modifiers = 0;
|
| + if (flags & ui::EF_SHIFT_DOWN)
|
| + modifiers |= WebKit::WebInputEvent::ShiftKey;
|
| + if (flags & ui::EF_CONTROL_DOWN)
|
| + modifiers |= WebKit::WebInputEvent::ControlKey;
|
| + if (flags & ui::EF_ALT_DOWN)
|
| + modifiers |= WebKit::WebInputEvent::AltKey;
|
| + // TODO(beng): MetaKey/META_MASK
|
| + if (flags & ui::EF_LEFT_MOUSE_BUTTON)
|
| + modifiers |= WebKit::WebInputEvent::LeftButtonDown;
|
| + if (flags & ui::EF_MIDDLE_MOUSE_BUTTON)
|
| + modifiers |= WebKit::WebInputEvent::MiddleButtonDown;
|
| + if (flags & ui::EF_RIGHT_MOUSE_BUTTON)
|
| + modifiers |= WebKit::WebInputEvent::RightButtonDown;
|
| + if (flags & ui::EF_CAPS_LOCK_DOWN)
|
| + modifiers |= WebKit::WebInputEvent::CapsLockOn;
|
| + return modifiers;
|
| +}
|
| +
|
| +WebKit::WebMouseEvent MakeWebMouseEventFromAuraEvent(ui::MouseEvent* event) {
|
| + WebKit::WebMouseEvent webkit_event;
|
| +
|
| + webkit_event.modifiers = EventFlagsToWebEventModifiers(event->flags());
|
| + webkit_event.timeStampSeconds = event->time_stamp().InSecondsF();
|
| +
|
| + webkit_event.button = WebKit::WebMouseEvent::ButtonNone;
|
| + if (event->flags() & ui::EF_LEFT_MOUSE_BUTTON)
|
| + webkit_event.button = WebKit::WebMouseEvent::ButtonLeft;
|
| + if (event->flags() & ui::EF_MIDDLE_MOUSE_BUTTON)
|
| + webkit_event.button = WebKit::WebMouseEvent::ButtonMiddle;
|
| + if (event->flags() & ui::EF_RIGHT_MOUSE_BUTTON)
|
| + webkit_event.button = WebKit::WebMouseEvent::ButtonRight;
|
| +
|
| + switch (event->type()) {
|
| + case ui::ET_MOUSE_PRESSED:
|
| + webkit_event.type = WebKit::WebInputEvent::MouseDown;
|
| + webkit_event.clickCount = event->GetClickCount();
|
| + break;
|
| + case ui::ET_MOUSE_RELEASED:
|
| + webkit_event.type = WebKit::WebInputEvent::MouseUp;
|
| + break;
|
| + case ui::ET_MOUSE_ENTERED:
|
| + case ui::ET_MOUSE_EXITED:
|
| + case ui::ET_MOUSE_MOVED:
|
| + case ui::ET_MOUSE_DRAGGED:
|
| + webkit_event.type = WebKit::WebInputEvent::MouseMove;
|
| + break;
|
| + default:
|
| + NOTIMPLEMENTED() << "Received unexpected event: " << event->type();
|
| + break;
|
| + }
|
| +
|
| + return webkit_event;
|
| +}
|
| +
|
| } // namespace content
|
|
|