Merge "Disable suggestion selection preview popup" into gingerbread

main
Tadashi G. Takaoka 2010-09-29 20:46:21 -07:00 committed by Android (Google) Code Review
commit eebe37e836
1 changed files with 59 additions and 52 deletions

View File

@ -149,61 +149,69 @@ public class CandidateView extends View {
mDescent = (int) mPaint.descent(); mDescent = (int) mPaint.descent();
mMinTouchableWidth = (int)res.getDimension(R.dimen.candidate_min_touchable_width); mMinTouchableWidth = (int)res.getDimension(R.dimen.candidate_min_touchable_width);
// Slightly reluctant to scroll to be able to easily choose the suggestion mGestureDetector = new GestureDetector(
final int touchSlopSquare = mMinTouchableWidth * mMinTouchableWidth; new CandidateStripGestureListener(mMinTouchableWidth));
mGestureDetector = new GestureDetector(new GestureDetector.SimpleOnGestureListener() {
@Override
public void onLongPress(MotionEvent me) {
if (mSuggestions.size() > 0) {
if (me.getX() + getScrollX() < mWordWidth[0] && getScrollX() < 10) {
longPressFirstWord();
}
}
}
@Override
public boolean onDown(MotionEvent e) {
mScrolled = false;
return false;
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2,
float distanceX, float distanceY) {
if (!mScrolled) {
// This is applied only when we recognize that scrolling is starting.
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 true;
}
mScrolled = true;
}
final int width = getWidth();
mScrolled = true;
int scrollX = getScrollX();
scrollX += (int) distanceX;
if (scrollX < 0) {
scrollX = 0;
}
if (distanceX > 0 && scrollX + width > mTotalWidth) {
scrollX -= (int) distanceX;
}
mTargetScrollX = scrollX;
scrollTo(scrollX, getScrollY());
hidePreview();
invalidate();
return true;
}
});
setWillNotDraw(false); setWillNotDraw(false);
setHorizontalScrollBarEnabled(false); setHorizontalScrollBarEnabled(false);
setVerticalScrollBarEnabled(false); setVerticalScrollBarEnabled(false);
scrollTo(0, getScrollY()); scrollTo(0, getScrollY());
} }
private class CandidateStripGestureListener extends GestureDetector.SimpleOnGestureListener {
private final int mTouchSlopSquare;
public CandidateStripGestureListener(int touchSlop) {
// Slightly reluctant to scroll to be able to easily choose the suggestion
mTouchSlopSquare = touchSlop * touchSlop;
}
@Override
public void onLongPress(MotionEvent me) {
if (mSuggestions.size() > 0) {
if (me.getX() + getScrollX() < mWordWidth[0] && getScrollX() < 10) {
longPressFirstWord();
}
}
}
@Override
public boolean onDown(MotionEvent e) {
mScrolled = false;
return false;
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2,
float distanceX, float distanceY) {
if (!mScrolled) {
// This is applied only when we recognize that scrolling is starting.
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 < mTouchSlopSquare) {
return true;
}
mScrolled = true;
}
final int width = getWidth();
mScrolled = true;
int scrollX = getScrollX();
scrollX += (int) distanceX;
if (scrollX < 0) {
scrollX = 0;
}
if (distanceX > 0 && scrollX + width > mTotalWidth) {
scrollX -= (int) distanceX;
}
mTargetScrollX = scrollX;
scrollTo(scrollX, getScrollY());
hidePreview();
invalidate();
return true;
}
}
/** /**
* A connection back to the service to communicate with the text field * A connection back to the service to communicate with the text field
* @param listener * @param listener
@ -282,7 +290,6 @@ public class CandidateView extends View {
mSelectionHighlight.setBounds(0, bgPadding.top, wordWidth, height); mSelectionHighlight.setBounds(0, bgPadding.top, wordWidth, height);
mSelectionHighlight.draw(canvas); mSelectionHighlight.draw(canvas);
canvas.translate(-x, 0); canvas.translate(-x, 0);
showPreview(i, null);
} }
mSelectedString = suggestion; mSelectedString = suggestion;
mSelectedIndex = i; mSelectedIndex = i;
@ -443,7 +450,6 @@ public class CandidateView extends View {
mSelectedIndex = -1; mSelectedIndex = -1;
removeHighlight(); removeHighlight();
requestLayout(); requestLayout();
mHandler.dismissPreview(mDelayAfterPreview);
break; break;
} }
return true; return true;
@ -501,6 +507,7 @@ public class CandidateView extends View {
if (word.length() < 2) return; if (word.length() < 2) return;
if (mService.addWordToDictionary(word.toString())) { if (mService.addWordToDictionary(word.toString())) {
showPreview(0, getContext().getResources().getString(R.string.added_word, word)); showPreview(0, getContext().getResources().getString(R.string.added_word, word));
mHandler.dismissPreview(mDelayAfterPreview);
} }
} }