summaryrefslogtreecommitdiffstats
path: root/content
diff options
context:
space:
mode:
authordavemoore@chromium.org <davemoore@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-12-15 17:52:02 +0000
committerdavemoore@chromium.org <davemoore@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-12-15 17:52:02 +0000
commitaca200e532f35181e8ae0d66e7f27ca7c6966bd1 (patch)
tree299d4785d08390f53efb91ac31c1c6d80d6dc130 /content
parent112f03ff93d980249601674796f12f5bab4ee839 (diff)
downloadchromium_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')
-rw-r--r--content/browser/renderer_host/render_widget_host_view_aura.cc4
-rw-r--r--content/browser/renderer_host/web_input_event_aura.cc25
-rw-r--r--content/browser/renderer_host/web_input_event_aura.h2
-rw-r--r--content/browser/renderer_host/web_input_event_aurax11.cc17
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();