aboutsummaryrefslogtreecommitdiffstats
path: root/src/com/android/inputmethod/latin/CandidateView.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/inputmethod/latin/CandidateView.java')
-rwxr-xr-xsrc/com/android/inputmethod/latin/CandidateView.java33
1 files changed, 23 insertions, 10 deletions
diff --git a/src/com/android/inputmethod/latin/CandidateView.java b/src/com/android/inputmethod/latin/CandidateView.java
index 08c68dc12..f397363c3 100755
--- a/src/com/android/inputmethod/latin/CandidateView.java
+++ b/src/com/android/inputmethod/latin/CandidateView.java
@@ -148,16 +148,17 @@ public class CandidateView extends View {
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2,
float distanceX, float distanceY) {
+ final int width = getWidth();
mScrolled = true;
- mScrollX += distanceX;
+ mScrollX += (int) distanceX;
if (mScrollX < 0) {
mScrollX = 0;
}
- if (mScrollX + getWidth() > mTotalWidth) {
- mScrollX -= distanceX;
+ if (distanceX > 0 && mScrollX + width > mTotalWidth) {
+ mScrollX -= (int) distanceX;
}
mTargetScrollX = mScrollX;
- showPreview(OUT_OF_BOUNDS, null);
+ hidePreview();
invalidate();
return true;
}
@@ -236,7 +237,8 @@ public class CandidateView extends View {
mWordX[i] = x;
- if (touchX + scrollX >= x && touchX + scrollX < x + wordWidth && !scrolled) {
+ if (touchX + scrollX >= x && touchX + scrollX < x + wordWidth && !scrolled &&
+ touchX != OUT_OF_BOUNDS) {
if (canvas != null) {
canvas.translate(x, 0);
mSelectionHighlight.setBounds(0, bgPadding.top, wordWidth, height);
@@ -399,7 +401,7 @@ public class CandidateView extends View {
mSelectedString = null;
mSelectedIndex = -1;
removeHighlight();
- showPreview(OUT_OF_BOUNDS, null);
+ hidePreview();
requestLayout();
break;
}
@@ -425,16 +427,21 @@ public class CandidateView extends View {
mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_REMOVE_THROUGH_PREVIEW), 200);
}
+ private void hidePreview() {
+ mCurrentWordIndex = OUT_OF_BOUNDS;
+ if (mPreviewPopup.isShowing()) {
+ mHandler.sendMessageDelayed(mHandler
+ .obtainMessage(MSG_REMOVE_PREVIEW), 60);
+ }
+ }
+
private void showPreview(int wordIndex, String altText) {
int oldWordIndex = mCurrentWordIndex;
mCurrentWordIndex = wordIndex;
// If index changed or changing text
if (oldWordIndex != mCurrentWordIndex || altText != null) {
if (wordIndex == OUT_OF_BOUNDS) {
- if (mPreviewPopup.isShowing()) {
- mHandler.sendMessageDelayed(mHandler
- .obtainMessage(MSG_REMOVE_PREVIEW), 60);
- }
+ hidePreview();
} else {
CharSequence word = altText != null? altText : mSuggestions.get(wordIndex);
mPreviewText.setText(word);
@@ -475,4 +482,10 @@ public class CandidateView extends View {
showPreview(0, getContext().getResources().getString(R.string.added_word, word));
}
}
+
+ @Override
+ public void onDetachedFromWindow() {
+ super.onDetachedFromWindow();
+ hidePreview();
+ }
}