Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 89e3c1ab authored by Grace Kloba's avatar Grace Kloba Committed by Android (Google) Code Review
Browse files

Merge "Fix the sloppy detection in the ScaleGestureDetector." into eclair

parents 38f7a02a 8f9fbb0c
Loading
Loading
Loading
Loading
+26 −11
Original line number Diff line number Diff line
@@ -185,12 +185,16 @@ public class ScaleGestureDetector {
                final float x1 = getRawX(event, 1);
                final float y1 = getRawY(event, 1);

                boolean p0sloppy = x0 < edgeSlop || y0 < edgeSlop ||
                        x1 < edgeSlop || y1 < edgeSlop;
                boolean p1sloppy = x0 > rightSlop || y0 > bottomSlop ||
                        x1 > rightSlop || y1 > bottomSlop;

                if (p0sloppy) {
                boolean p0sloppy = x0 < edgeSlop || y0 < edgeSlop
                        || x0 > rightSlop || y0 > bottomSlop;
                boolean p1sloppy = x1 < edgeSlop || y1 < edgeSlop
                        || x1 > rightSlop || y1 > bottomSlop;

                if(p0sloppy && p1sloppy) {
                    mFocusX = -1;
                    mFocusY = -1;
                    mSloppyGesture = true;
                } else if (p0sloppy) {
                    mFocusX = event.getX(1);
                    mFocusY = event.getY(1);
                    mSloppyGesture = true;
@@ -211,12 +215,15 @@ public class ScaleGestureDetector {
                final float x1 = getRawX(event, 1);
                final float y1 = getRawY(event, 1);

                boolean p0sloppy = x0 < edgeSlop || y0 < edgeSlop ||
                x1 < edgeSlop || y1 < edgeSlop;
                boolean p1sloppy = x0 > rightSlop || y0 > bottomSlop ||
                x1 > rightSlop || y1 > bottomSlop;
                boolean p0sloppy = x0 < edgeSlop || y0 < edgeSlop
                        || x0 > rightSlop || y0 > bottomSlop;
                boolean p1sloppy = x1 < edgeSlop || y1 < edgeSlop
                        || x1 > rightSlop || y1 > bottomSlop;

                if (p0sloppy) {
                if(p0sloppy && p1sloppy) {
                    mFocusX = -1;
                    mFocusY = -1;
                } else if (p0sloppy) {
                    mFocusX = event.getX(1);
                    mFocusY = event.getY(1);
                } else if (p1sloppy) {
@@ -226,6 +233,14 @@ public class ScaleGestureDetector {
                    mSloppyGesture = false;
                    mGestureInProgress = mListener.onScaleBegin(this);
                }
            } else if ((action == MotionEvent.ACTION_POINTER_1_UP
                    || action == MotionEvent.ACTION_POINTER_2_UP)
                    && mSloppyGesture) {
                // Set focus point to the remaining finger
                int id = (((action & MotionEvent.ACTION_POINTER_ID_MASK)
                        >> MotionEvent.ACTION_POINTER_ID_SHIFT) == 0) ? 1 : 0;
                mFocusX = event.getX(id);
                mFocusY = event.getY(id);
            }
        } else {
            // Transform gesture in progress - attempt to handle it