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())
|
- (container.getMeasuredHeight() - container.getPaddingBottom())
|
||||||
+ parentView.getPaddingTop() + mCoordinates[1];
|
+ parentView.getPaddingTop() + mCoordinates[1];
|
||||||
|
|
||||||
window.setInputMethodMode(PopupWindow.INPUT_METHOD_NOT_NEEDED);
|
|
||||||
window.setOutsideTouchable(true);
|
|
||||||
window.setContentView(container);
|
window.setContentView(container);
|
||||||
window.setWidth(container.getMeasuredWidth());
|
window.setWidth(container.getMeasuredWidth());
|
||||||
window.setHeight(container.getMeasuredHeight());
|
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
|
@Override
|
||||||
public boolean onTouchEvent(MotionEvent me) {
|
public boolean onTouchEvent(MotionEvent me) {
|
||||||
final int action = me.getAction();
|
final int action = me.getAction();
|
||||||
|
|
|
@ -27,6 +27,7 @@ import android.graphics.Paint.Align;
|
||||||
import android.graphics.Rect;
|
import android.graphics.Rect;
|
||||||
import android.graphics.Typeface;
|
import android.graphics.Typeface;
|
||||||
import android.graphics.drawable.BitmapDrawable;
|
import android.graphics.drawable.BitmapDrawable;
|
||||||
|
import android.graphics.drawable.ColorDrawable;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.os.Message;
|
import android.os.Message;
|
||||||
import android.os.SystemClock;
|
import android.os.SystemClock;
|
||||||
|
@ -506,10 +507,22 @@ public class SuggestionsView extends RelativeLayout implements OnClickListener,
|
||||||
mMoreSuggestionsView = (MoreSuggestionsView)mMoreSuggestionsContainer
|
mMoreSuggestionsView = (MoreSuggestionsView)mMoreSuggestionsContainer
|
||||||
.findViewById(R.id.more_suggestions_view);
|
.findViewById(R.id.more_suggestions_view);
|
||||||
mMoreSuggestionsBuilder = new MoreSuggestions.Builder(mMoreSuggestionsView);
|
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);
|
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();
|
final Resources res = context.getResources();
|
||||||
mMoreSuggestionsModalTolerance = res.getDimensionPixelOffset(
|
mMoreSuggestionsModalTolerance = res.getDimensionPixelOffset(
|
||||||
R.dimen.more_suggestions_modal_tolerance);
|
R.dimen.more_suggestions_modal_tolerance);
|
||||||
|
@ -517,21 +530,6 @@ public class SuggestionsView extends RelativeLayout implements OnClickListener,
|
||||||
context, mMoreSuggestionsSlidingListener);
|
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.
|
* A connection back to the input method.
|
||||||
* @param listener
|
* @param listener
|
||||||
|
@ -726,8 +724,6 @@ public class SuggestionsView extends RelativeLayout implements OnClickListener,
|
||||||
private boolean dismissMoreSuggestions() {
|
private boolean dismissMoreSuggestions() {
|
||||||
if (mMoreSuggestionsWindow.isShowing()) {
|
if (mMoreSuggestionsWindow.isShowing()) {
|
||||||
mMoreSuggestionsWindow.dismiss();
|
mMoreSuggestionsWindow.dismiss();
|
||||||
mKeyboardView.dimEntireKeyboard(false);
|
|
||||||
mKeyboardView.setOnTouchListener(null);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
@ -767,7 +763,6 @@ public class SuggestionsView extends RelativeLayout implements OnClickListener,
|
||||||
mOriginX = mLastX;
|
mOriginX = mLastX;
|
||||||
mOriginY = mLastY;
|
mOriginY = mLastY;
|
||||||
mKeyboardView.dimEntireKeyboard(true);
|
mKeyboardView.dimEntireKeyboard(true);
|
||||||
mKeyboardView.setOnTouchListener(mMoreSuggestionsCanceller);
|
|
||||||
for (int i = 0; i < params.mSuggestionsCountInStrip; i++) {
|
for (int i = 0; i < params.mSuggestionsCountInStrip; i++) {
|
||||||
mWords.get(i).setPressed(false);
|
mWords.get(i).setPressed(false);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue