From 353c20a62ffe9b21b4efa9a6d3be2c1492e6ab83 Mon Sep 17 00:00:00 2001
From: "Tadashi G. Takaoka" <takaoka@google.com>
Date: Fri, 16 Jul 2010 17:45:39 -0700
Subject: [PATCH] Slightly reluctant to scroll candidate strip to be able to
 easily choose the suggestion

Also fixed the comment of mMinTouchableWidth

Bug: 2581826

Change-Id: Idc79186b0647b0e7e7ec889488b019b7db5241ad
---
 .../android/inputmethod/latin/CandidateView.java    | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/java/src/com/android/inputmethod/latin/CandidateView.java b/java/src/com/android/inputmethod/latin/CandidateView.java
index ae45001b8e..93966a86c1 100755
--- a/java/src/com/android/inputmethod/latin/CandidateView.java
+++ b/java/src/com/android/inputmethod/latin/CandidateView.java
@@ -144,9 +144,13 @@ public class CandidateView extends View {
         mPaint.setStrokeWidth(0);
         mPaint.setTextAlign(Align.CENTER);
         mDescent = (int) mPaint.descent();
-        // 80 pixels for a 160dpi device would mean half an inch
+        // 50 pixels for a 160dpi device would mean about 0.3 inch
         mMinTouchableWidth = (int) (getResources().getDisplayMetrics().density * 50);
         
+        // Slightly reluctant to scroll to be able to easily choose the suggestion
+        // 50 pixels for a 160dpi device would mean about 0.3 inch
+        final int touchSlop = (int) (getResources().getDisplayMetrics().density * 50);
+        final int touchSlopSquare = touchSlop * touchSlop;
         mGestureDetector = new GestureDetector(new GestureDetector.SimpleOnGestureListener() {
             @Override
             public void onLongPress(MotionEvent me) {
@@ -160,6 +164,13 @@ public class CandidateView extends View {
             @Override
             public boolean onScroll(MotionEvent e1, MotionEvent e2,
                     float distanceX, float distanceY) {
+                final int deltaX = (int) (e2.getX() - e1.getX());
+                final int deltaY = (int) (e2.getY() - e1.getY());
+                final int distance = (deltaX * deltaX) + (deltaY * deltaY);
+                if (distance < touchSlopSquare) {
+                    return false;
+                }
+
                 final int width = getWidth();
                 mScrolled = true;
                 int scrollX = getScrollX();
-- 
GitLab