Stop overriding SuggestionStripView.dispatchTouchEvent
Bug: 11721001 Bug: 11976254 Change-Id: Idfdeafe45abb16ca54be529b4f4b2c38c22a7facmain
parent
4f4fb5ef34
commit
e32548f32d
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue