diff options
author | davemoore@chromium.org <davemoore@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-12-15 17:52:02 +0000 |
---|---|---|
committer | davemoore@chromium.org <davemoore@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-12-15 17:52:02 +0000 |
commit | aca200e532f35181e8ae0d66e7f27ca7c6966bd1 (patch) | |
tree | 299d4785d08390f53efb91ac31c1c6d80d6dc130 /content | |
parent | 112f03ff93d980249601674796f12f5bab4ee839 (diff) | |
download | chromium_src-aca200e532f35181e8ae0d66e7f27ca7c6966bd1.zip chromium_src-aca200e532f35181e8ae0d66e7f27ca7c6966bd1.tar.gz chromium_src-aca200e532f35181e8ae0d66e7f27ca7c6966bd1.tar.bz2 |
CMT can now generate motion events w/ valuators instead of a sequence of button events. This supports them
BUG=None
TEST=None
Review URL: http://codereview.chromium.org/8907005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@114660 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content')
4 files changed, 48 insertions, 0 deletions
diff --git a/content/browser/renderer_host/render_widget_host_view_aura.cc b/content/browser/renderer_host/render_widget_host_view_aura.cc index ee0fa83..61cb85a 100644 --- a/content/browser/renderer_host/render_widget_host_view_aura.cc +++ b/content/browser/renderer_host/render_widget_host_view_aura.cc @@ -506,6 +506,10 @@ int RenderWidgetHostViewAura::GetNonClientComponent( bool RenderWidgetHostViewAura::OnMouseEvent(aura::MouseEvent* event) { if (event->type() == ui::ET_MOUSEWHEEL) host_->ForwardWheelEvent(content::MakeWebMouseWheelEvent(event)); + else if (event->type() == ui::ET_SCROLL) + host_->ForwardWheelEvent( + content::MakeWebMouseWheelEvent( + static_cast<aura::ScrollEvent*>(event))); else if (CanRendererHandleEvent(event->native_event())) host_->ForwardMouseEvent(content::MakeWebMouseEvent(event)); diff --git a/content/browser/renderer_host/web_input_event_aura.cc b/content/browser/renderer_host/web_input_event_aura.cc index e57c74f..6405303 100644 --- a/content/browser/renderer_host/web_input_event_aura.cc +++ b/content/browser/renderer_host/web_input_event_aura.cc @@ -22,6 +22,8 @@ WebKit::WebTouchPoint* UpdateWebTouchEventFromNativeEvent( WebKit::WebMouseEvent MakeWebMouseEventFromAuraEvent(aura::MouseEvent* event); WebKit::WebMouseWheelEvent MakeWebMouseWheelEventFromAuraEvent( aura::MouseEvent* event); +WebKit::WebMouseWheelEvent MakeWebMouseWheelEventFromAuraEvent( + aura::ScrollEvent* event); WebKit::WebKeyboardEvent MakeWebKeyboardEventFromAuraEvent( aura::KeyEvent* event); WebKit::WebTouchPoint* UpdateWebTouchEventFromAuraEvent( @@ -96,6 +98,29 @@ WebKit::WebMouseWheelEvent MakeWebMouseWheelEvent(aura::MouseEvent* event) { return webkit_event; } +WebKit::WebMouseWheelEvent MakeWebMouseWheelEvent(aura::ScrollEvent* event) { +#if defined(OS_WIN) + // Construct an untranslated event from the platform event data. + WebKit::WebMouseWheelEvent webkit_event = + MakeUntranslatedWebMouseWheelEventFromNativeEvent(event->native_event()); +#else + WebKit::WebMouseWheelEvent webkit_event = + MakeWebMouseWheelEventFromAuraEvent(event); +#endif + + // Replace the event's coordinate fields with translated position data from + // |event|. + webkit_event.windowX = webkit_event.x = event->x(); + webkit_event.windowY = webkit_event.y = event->y(); + + const gfx::Point host_point = + ui::EventLocationFromNative(event->native_event()); + webkit_event.globalX = host_point.x(); + webkit_event.globalY = host_point.y(); + + return webkit_event; +} + WebKit::WebKeyboardEvent MakeWebKeyboardEvent(aura::KeyEvent* event) { // Windows can figure out whether or not to construct a RawKeyDown or a Char // WebInputEvent based on the type of message carried in diff --git a/content/browser/renderer_host/web_input_event_aura.h b/content/browser/renderer_host/web_input_event_aura.h index 4679554..be6167b 100644 --- a/content/browser/renderer_host/web_input_event_aura.h +++ b/content/browser/renderer_host/web_input_event_aura.h @@ -11,6 +11,7 @@ namespace aura { class KeyEvent; class MouseEvent; +class ScrollEvent; class TouchEvent; } @@ -18,6 +19,7 @@ namespace content { WebKit::WebMouseEvent MakeWebMouseEvent(aura::MouseEvent* event); WebKit::WebMouseWheelEvent MakeWebMouseWheelEvent(aura::MouseEvent* event); +WebKit::WebMouseWheelEvent MakeWebMouseWheelEvent(aura::ScrollEvent* event); WebKit::WebKeyboardEvent MakeWebKeyboardEvent(aura::KeyEvent* event); // Updates the WebTouchEvent based on the TouchEvent. It returns the updated diff --git a/content/browser/renderer_host/web_input_event_aurax11.cc b/content/browser/renderer_host/web_input_event_aurax11.cc index 634e44c..67e0993 100644 --- a/content/browser/renderer_host/web_input_event_aurax11.cc +++ b/content/browser/renderer_host/web_input_event_aurax11.cc @@ -273,6 +273,23 @@ WebKit::WebMouseWheelEvent MakeWebMouseWheelEventFromAuraEvent( return webkit_event; } +WebKit::WebMouseWheelEvent MakeWebMouseWheelEventFromAuraEvent( + aura::ScrollEvent* event) { + WebKit::WebMouseWheelEvent webkit_event; + + webkit_event.type = WebKit::WebInputEvent::MouseWheel; + webkit_event.button = WebKit::WebMouseEvent::ButtonNone; + webkit_event.modifiers = EventFlagsToWebEventModifiers(event->flags()); + webkit_event.timeStampSeconds = event->time_stamp().ToDoubleT(); + // TODO(davemoore) Support X offset, once cmt generates better data. + if (abs(event->y_offset()) >= 1) { + webkit_event.deltaY = event->y_offset(); + webkit_event.wheelTicksY = webkit_event.deltaY > 0 ? 1 : -1; + } + + return webkit_event; +} + WebKit::WebKeyboardEvent MakeWebKeyboardEventFromAuraEvent( aura::KeyEvent* event) { base::NativeEvent native_event = event->native_event(); |