Handle back key and outside touch correctly in more suggestions window
Bug: 5385284 Change-Id: Ic0517182d294c79e37c88f1ef30cb4d2917b2800main
parent
727672d3fc
commit
bfc1d732ac
|
@ -163,8 +163,6 @@ public class MoreSuggestionsView extends KeyboardView implements MoreKeysPanel {
|
|||
- (container.getMeasuredHeight() - container.getPaddingBottom())
|
||||
+ parentView.getPaddingTop() + mCoordinates[1];
|
||||
|
||||
window.setInputMethodMode(PopupWindow.INPUT_METHOD_NOT_NEEDED);
|
||||
window.setOutsideTouchable(true);
|
||||
window.setContentView(container);
|
||||
window.setWidth(container.getMeasuredWidth());
|
||||
window.setHeight(container.getMeasuredHeight());
|
||||
|
@ -220,22 +218,6 @@ public class MoreSuggestionsView extends KeyboardView implements MoreKeysPanel {
|
|||
}
|
||||
};
|
||||
|
||||
@Override
|
||||
public boolean dispatchTouchEvent(MotionEvent me) {
|
||||
final int index = me.getActionIndex();
|
||||
final int id = me.getPointerId(index);
|
||||
final PointerTracker tracker = PointerTracker.getPointerTracker(id, this);
|
||||
final int x = (int)me.getX(index);
|
||||
final int y = (int)me.getY(index);
|
||||
final boolean inside = (x >= 0 && x < getWidth() && y >= 0 && y < getHeight());
|
||||
if (inside || tracker.isInSlidingKeyInput()) {
|
||||
return super.dispatchTouchEvent(me);
|
||||
} else {
|
||||
dismissMoreKeysPanel();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onTouchEvent(MotionEvent me) {
|
||||
final int action = me.getAction();
|
||||
|
|
|
@ -27,6 +27,7 @@ import android.graphics.Paint.Align;
|
|||
import android.graphics.Rect;
|
||||
import android.graphics.Typeface;
|
||||
import android.graphics.drawable.BitmapDrawable;
|
||||
import android.graphics.drawable.ColorDrawable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Message;
|
||||
import android.os.SystemClock;
|
||||
|
@ -506,10 +507,22 @@ public class SuggestionsView extends RelativeLayout implements OnClickListener,
|
|||
mMoreSuggestionsView = (MoreSuggestionsView)mMoreSuggestionsContainer
|
||||
.findViewById(R.id.more_suggestions_view);
|
||||
mMoreSuggestionsBuilder = new MoreSuggestions.Builder(mMoreSuggestionsView);
|
||||
mMoreSuggestionsWindow = new PopupWindow(context);
|
||||
mMoreSuggestionsWindow.setWindowLayoutMode(
|
||||
|
||||
final PopupWindow moreWindow = new PopupWindow(context);
|
||||
moreWindow.setWindowLayoutMode(
|
||||
ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
|
||||
mMoreSuggestionsWindow.setBackgroundDrawable(null);
|
||||
moreWindow.setBackgroundDrawable(new ColorDrawable(android.R.color.transparent));
|
||||
moreWindow.setInputMethodMode(PopupWindow.INPUT_METHOD_NOT_NEEDED);
|
||||
moreWindow.setFocusable(true);
|
||||
moreWindow.setOutsideTouchable(true);
|
||||
moreWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
|
||||
@Override
|
||||
public void onDismiss() {
|
||||
mKeyboardView.dimEntireKeyboard(false);
|
||||
}
|
||||
});
|
||||
mMoreSuggestionsWindow = moreWindow;
|
||||
|
||||
final Resources res = context.getResources();
|
||||
mMoreSuggestionsModalTolerance = res.getDimensionPixelOffset(
|
||||
R.dimen.more_suggestions_modal_tolerance);
|
||||
|
@ -517,21 +530,6 @@ public class SuggestionsView extends RelativeLayout implements OnClickListener,
|
|||
context, mMoreSuggestionsSlidingListener);
|
||||
}
|
||||
|
||||
private final View.OnTouchListener mMoreSuggestionsCanceller = new View.OnTouchListener() {
|
||||
@Override
|
||||
public boolean onTouch(View view, MotionEvent me) {
|
||||
if (!mMoreSuggestionsWindow.isShowing()) return false;
|
||||
|
||||
switch (me.getAction()) {
|
||||
case MotionEvent.ACTION_UP:
|
||||
case MotionEvent.ACTION_POINTER_UP:
|
||||
return mMoreSuggestionsView.dismissMoreKeysPanel();
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* A connection back to the input method.
|
||||
* @param listener
|
||||
|
@ -726,8 +724,6 @@ public class SuggestionsView extends RelativeLayout implements OnClickListener,
|
|||
private boolean dismissMoreSuggestions() {
|
||||
if (mMoreSuggestionsWindow.isShowing()) {
|
||||
mMoreSuggestionsWindow.dismiss();
|
||||
mKeyboardView.dimEntireKeyboard(false);
|
||||
mKeyboardView.setOnTouchListener(null);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
@ -767,7 +763,6 @@ public class SuggestionsView extends RelativeLayout implements OnClickListener,
|
|||
mOriginX = mLastX;
|
||||
mOriginY = mLastY;
|
||||
mKeyboardView.dimEntireKeyboard(true);
|
||||
mKeyboardView.setOnTouchListener(mMoreSuggestionsCanceller);
|
||||
for (int i = 0; i < params.mSuggestionsCountInStrip; i++) {
|
||||
mWords.get(i).setPressed(false);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue