Stop overriding SuggestionStripView.dispatchTouchEvent

Bug: 11721001
Bug: 11976254
Change-Id: Idfdeafe45abb16ca54be529b4f4b2c38c22a7fac
main
Tadashi G. Takaoka 2014-02-17 16:46:38 +09:00
parent 4f4fb5ef34
commit e32548f32d
1 changed files with 23 additions and 24 deletions

View File

@ -325,7 +325,6 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick
final int pointY = -layoutHelper.mMoreSuggestionsBottomGap; final int pointY = -layoutHelper.mMoreSuggestionsBottomGap;
moreKeysPanel.showMoreKeysPanel(this, mMoreSuggestionsController, pointX, pointY, moreKeysPanel.showMoreKeysPanel(this, mMoreSuggestionsController, pointX, pointY,
mMoreSuggestionsListener); mMoreSuggestionsListener);
mMoreSuggestionsMode = MORE_SUGGESTIONS_CHECKING_MODAL_OR_SLIDING;
mOriginX = mLastX; mOriginX = mLastX;
mOriginY = mLastY; mOriginY = mLastY;
for (int i = 0; i < mSuggestionsCountInStrip; i++) { for (int i = 0; i < mSuggestionsCountInStrip; i++) {
@ -334,11 +333,8 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick
return true; return true;
} }
// Working variables for onLongClick and dispatchTouchEvent. // Working variables for {@link #onLongClick(View)} and
private int mMoreSuggestionsMode = MORE_SUGGESTIONS_IN_MODAL_MODE; // {@link onInterceptTouchEvent(MotionEvent)}.
private static final int MORE_SUGGESTIONS_IN_MODAL_MODE = 0;
private static final int MORE_SUGGESTIONS_CHECKING_MODAL_OR_SLIDING = 1;
private static final int MORE_SUGGESTIONS_IN_SLIDING_MODE = 2;
private int mLastX; private int mLastX;
private int mLastY; private int mLastY;
private int mOriginX; private int mOriginX;
@ -358,36 +354,39 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick
}; };
@Override @Override
public boolean dispatchTouchEvent(final MotionEvent me) { public boolean onInterceptTouchEvent(final MotionEvent me) {
if (!mMoreSuggestionsView.isShowingInParent()) { if (!mMoreSuggestionsView.isShowingInParent()) {
mLastX = (int)me.getX(); mLastX = (int)me.getX();
mLastY = (int)me.getY(); mLastY = (int)me.getY();
if (mMoreSuggestionsSlidingDetector.onTouchEvent(me)) { return mMoreSuggestionsSlidingDetector.onTouchEvent(me);
return true;
}
return super.dispatchTouchEvent(me);
} }
final int action = me.getAction(); final int action = me.getAction();
final int index = me.getActionIndex(); final int index = me.getActionIndex();
final int x = (int)me.getX(index); final int x = (int)me.getX(index);
final int y = (int)me.getY(index); final int y = (int)me.getY(index);
if (Math.abs(x - mOriginX) >= mMoreSuggestionsModalTolerance
if (mMoreSuggestionsMode == MORE_SUGGESTIONS_CHECKING_MODAL_OR_SLIDING) { || mOriginY - y >= mMoreSuggestionsModalTolerance) {
if (Math.abs(x - mOriginX) >= mMoreSuggestionsModalTolerance // Decided to be in the sliding input mode only when the touch point has been moved
|| mOriginY - y >= mMoreSuggestionsModalTolerance) { // upward. Further {@link MotionEvent}s will be delivered to
// Decided to be in the sliding input mode only when the touch point has been moved // {@link #onTouchEvent(MotionEvent)}.
// upward.
mMoreSuggestionsMode = MORE_SUGGESTIONS_IN_SLIDING_MODE;
} else if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_POINTER_UP) {
// Decided to be in the modal input mode
mMoreSuggestionsMode = MORE_SUGGESTIONS_IN_MODAL_MODE;
mMoreSuggestionsView.adjustVerticalCorrectionForModalMode();
}
return true; return true;
} }
// MORE_SUGGESTIONS_IN_SLIDING_MODE if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_POINTER_UP) {
// Decided to be in the modal input mode.
mMoreSuggestionsView.adjustVerticalCorrectionForModalMode();
}
return false;
}
@Override
public boolean onTouchEvent(final MotionEvent me) {
// In the sliding input mode. {@link MotionEvent} should be forwarded to
// {@link MoreSuggestionsView}.
final int index = me.getActionIndex();
final int x = (int)me.getX(index);
final int y = (int)me.getY(index);
me.setLocation(mMoreSuggestionsView.translateX(x), mMoreSuggestionsView.translateY(y)); me.setLocation(mMoreSuggestionsView.translateX(x), mMoreSuggestionsView.translateY(y));
mMoreSuggestionsView.onTouchEvent(me); mMoreSuggestionsView.onTouchEvent(me);
return true; return true;