aboutsummaryrefslogtreecommitdiffstats
path: root/src/com/android/inputmethod/latin/CandidateView.java
diff options
context:
space:
mode:
authorAmith Yamasani <yamasani@google.com>2010-02-03 15:35:49 -0800
committerAmith Yamasani <yamasani@google.com>2010-02-03 15:55:12 -0800
commit6a6075caba3865383eeeb52cccc63a28e4ae5900 (patch)
tree59cc6f7b0cb8d6700cc066e665d4273766dc943c /src/com/android/inputmethod/latin/CandidateView.java
parentf892861b7bf87efbbdbed8f911a715ca1614829b (diff)
downloadlatinime-6a6075caba3865383eeeb52cccc63a28e4ae5900.tar.gz
latinime-6a6075caba3865383eeeb52cccc63a28e4ae5900.tar.xz
latinime-6a6075caba3865383eeeb52cccc63a28e4ae5900.zip
Suggest punctuations between word suggestions, for easy access to ?,!, etc.
Also fix a visual bug with the dividers between suggested words.
Diffstat (limited to 'src/com/android/inputmethod/latin/CandidateView.java')
-rwxr-xr-xsrc/com/android/inputmethod/latin/CandidateView.java18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/com/android/inputmethod/latin/CandidateView.java b/src/com/android/inputmethod/latin/CandidateView.java
index e6a9d6bbf..0b6b89e6b 100755
--- a/src/com/android/inputmethod/latin/CandidateView.java
+++ b/src/com/android/inputmethod/latin/CandidateView.java
@@ -26,6 +26,7 @@ import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.Typeface;
+import android.graphics.Paint.Align;
import android.graphics.drawable.Drawable;
import android.os.Handler;
import android.os.Message;
@@ -82,7 +83,9 @@ public class CandidateView extends View {
private int mDescent;
private boolean mScrolled;
private int mTargetScrollX;
-
+
+ private int mMinTouchableWidth;
+
private int mTotalWidth;
private GestureDetector mGestureDetector;
@@ -133,7 +136,10 @@ public class CandidateView extends View {
mPaint.setAntiAlias(true);
mPaint.setTextSize(mPreviewText.getTextSize());
mPaint.setStrokeWidth(0);
+ mPaint.setTextAlign(Align.CENTER);
mDescent = (int) mPaint.descent();
+ // 80 pixels for a 160dpi device would mean half an inch
+ mMinTouchableWidth = (int) (getResources().getDisplayMetrics().density * 50);
mGestureDetector = new GestureDetector(new GestureDetector.SimpleOnGestureListener() {
@Override
@@ -203,7 +209,7 @@ public class CandidateView extends View {
if (getBackground() != null) {
getBackground().getPadding(mBgPadding);
}
- mDivider.setBounds(0, mBgPadding.top, mDivider.getIntrinsicWidth(),
+ mDivider.setBounds(0, 0, mDivider.getIntrinsicWidth(),
mDivider.getIntrinsicHeight());
}
int x = 0;
@@ -233,7 +239,7 @@ public class CandidateView extends View {
wordWidth = mWordWidth[i];
} else {
float textWidth = paint.measureText(suggestion, 0, suggestion.length());
- wordWidth = (int) textWidth + X_GAP * 2;
+ wordWidth = Math.max(mMinTouchableWidth, (int) textWidth + X_GAP * 2);
mWordWidth[i] = wordWidth;
}
@@ -253,7 +259,7 @@ public class CandidateView extends View {
}
if (canvas != null) {
- canvas.drawText(suggestion, 0, suggestion.length(), x + X_GAP, y, paint);
+ canvas.drawText(suggestion, 0, suggestion.length(), x + wordWidth / 2, y, paint);
paint.setColor(mColorOther);
canvas.translate(x + wordWidth, 0);
mDivider.draw(canvas);
@@ -462,7 +468,8 @@ public class CandidateView extends View {
+ mPreviewText.getPaddingLeft() + mPreviewText.getPaddingRight();
final int popupHeight = mPreviewText.getMeasuredHeight();
//mPreviewText.setVisibility(INVISIBLE);
- mPopupPreviewX = mWordX[wordIndex] - mPreviewText.getPaddingLeft() - getScrollX();
+ mPopupPreviewX = mWordX[wordIndex] - mPreviewText.getPaddingLeft() - getScrollX()
+ + (mWordWidth[wordIndex] - wordWidth) / 2;
mPopupPreviewY = - popupHeight;
mHandler.removeMessages(MSG_REMOVE_PREVIEW);
int [] offsetInWindow = new int[2];
@@ -488,6 +495,7 @@ public class CandidateView extends View {
private void longPressFirstWord() {
CharSequence word = mSuggestions.get(0);
+ if (word.length() < 2) return;
if (mService.addWordToDictionary(word.toString())) {
showPreview(0, getContext().getResources().getString(R.string.added_word, word));
}