From d5ada83c719d366d3063572ca6ce5ab8918fd39b Mon Sep 17 00:00:00 2001 From: Grace Kloba Date: Wed, 20 Jan 2010 23:06:43 -0800 Subject: [PATCH] ScaleGestureDetector needs to query the displaymetrics for the width/height on each touch down as orientation can change. This should fix the problem where we can't pinch on the top right corner when device is in landscape mode. --- core/java/android/view/ScaleGestureDetector.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/core/java/android/view/ScaleGestureDetector.java b/core/java/android/view/ScaleGestureDetector.java index 2f1c2b2dacf15..f991df7b637f5 100644 --- a/core/java/android/view/ScaleGestureDetector.java +++ b/core/java/android/view/ScaleGestureDetector.java @@ -147,12 +147,9 @@ public class ScaleGestureDetector { public ScaleGestureDetector(Context context, OnScaleGestureListener listener) { ViewConfiguration config = ViewConfiguration.get(context); - DisplayMetrics metrics = context.getResources().getDisplayMetrics(); mContext = context; mListener = listener; mEdgeSlop = config.getScaledEdgeSlop(); - mRightSlopEdge = metrics.widthPixels - mEdgeSlop; - mBottomSlopEdge = metrics.heightPixels - mEdgeSlop; } public boolean onTouchEvent(MotionEvent event) { @@ -165,6 +162,11 @@ public class ScaleGestureDetector { event.getPointerCount() >= 2) { // We have a new multi-finger gesture + // as orientation can change, query the metrics in touch down + DisplayMetrics metrics = mContext.getResources().getDisplayMetrics(); + mRightSlopEdge = metrics.widthPixels - mEdgeSlop; + mBottomSlopEdge = metrics.heightPixels - mEdgeSlop; + // Be paranoid in case we missed an event reset();