diff options
author | yusufo@chromium.org <yusufo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-01-22 22:21:48 +0000 |
---|---|---|
committer | yusufo@chromium.org <yusufo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-01-22 22:21:48 +0000 |
commit | 42e4b2199f5a72111b720a76a1f3ab859d3cbcf2 (patch) | |
tree | 01c1d87791e72d71e811a51057623473354fa6f0 /content/browser/android/touch_point.cc | |
parent | 7024538f9b008ab42274bfc248ae7ed98d18ea42 (diff) | |
download | chromium_src-42e4b2199f5a72111b720a76a1f3ab859d3cbcf2.zip chromium_src-42e4b2199f5a72111b720a76a1f3ab859d3cbcf2.tar.gz chromium_src-42e4b2199f5a72111b720a76a1f3ab859d3cbcf2.tar.bz2 |
Fix touch points to scale down by DPI when creating WebTouchEvents
When changing the gesture related calls to scale down by dpi_scale we had
missed to do the same for TouchEvents. Adding it to touch_point so that the
scaling works when dpi_scale is not 1.
BUG=168929
Review URL: https://chromiumcodereview.appspot.com/12038025
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@178126 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser/android/touch_point.cc')
-rw-r--r-- | content/browser/android/touch_point.cc | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/content/browser/android/touch_point.cc b/content/browser/android/touch_point.cc index 70ed9db..d76de6e 100644 --- a/content/browser/android/touch_point.cc +++ b/content/browser/android/touch_point.cc @@ -15,7 +15,10 @@ using WebKit::WebTouchPoint; namespace { -void MaybeAddTouchPoint(JNIEnv* env, jobject pt, WebKit::WebTouchEvent& event) { +void MaybeAddTouchPoint(JNIEnv* env, + jobject pt, + float dpi_scale, + WebKit::WebTouchEvent& event) { WebTouchPoint::State state = static_cast<WebTouchPoint::State>( Java_TouchPoint_getState(env, pt)); if (state == WebTouchPoint::StateUndefined) @@ -34,8 +37,8 @@ void MaybeAddTouchPoint(JNIEnv* env, jobject pt, WebKit::WebTouchEvent& event) { WebTouchPoint wtp; wtp.id = Java_TouchPoint_getId(env, pt); wtp.state = state; - wtp.position.x = Java_TouchPoint_getX(env, pt); - wtp.position.y = Java_TouchPoint_getY(env, pt); + wtp.position.x = Java_TouchPoint_getX(env, pt) / dpi_scale; + wtp.position.y = Java_TouchPoint_getY(env, pt) / dpi_scale; // TODO(joth): Raw event co-ordinates. wtp.screenPosition = wtp.position; wtp.force = Java_TouchPoint_getPressure(env, pt); @@ -50,8 +53,8 @@ void MaybeAddTouchPoint(JNIEnv* env, jobject pt, WebKit::WebTouchEvent& event) { const static double SCALE_FACTOR = 1024.0; const int radius = static_cast<int>( (sqrt(Java_TouchPoint_getSize(env, pt)) / PI) * SCALE_FACTOR); - wtp.radiusX = radius; - wtp.radiusY = radius; + wtp.radiusX = radius / dpi_scale; + wtp.radiusY = radius / dpi_scale; // Since our radii are equal, a rotation angle doesn't mean anything. wtp.rotationAngle = 0.0; @@ -64,8 +67,12 @@ void MaybeAddTouchPoint(JNIEnv* env, jobject pt, WebKit::WebTouchEvent& event) { namespace content { -void TouchPoint::BuildWebTouchEvent(JNIEnv* env, jint type, jlong time_ms, - jobjectArray pts, WebKit::WebTouchEvent& event) { +void TouchPoint::BuildWebTouchEvent(JNIEnv* env, + jint type, + jlong time_ms, + float dpi_scale, + jobjectArray pts, + WebKit::WebTouchEvent& event) { event.type = static_cast<WebTouchEvent::Type>(type); event.timeStampSeconds = static_cast<double>(time_ms) / base::Time::kMillisecondsPerSecond; @@ -74,7 +81,7 @@ void TouchPoint::BuildWebTouchEvent(JNIEnv* env, jint type, jlong time_ms, // array has been filled for (int i = 0; i < arrayLength; i++) { jobject pt = env->GetObjectArrayElement(pts, i); - MaybeAddTouchPoint(env, pt, event); + MaybeAddTouchPoint(env, pt, dpi_scale, event); if (event.touchesLength >= event.touchesLengthCap) break; } |