Merge "Cancel more suggestions when its outside is touched"
This commit is contained in:
commit
f01ba10c8f
1 changed files with 24 additions and 0 deletions
|
@ -145,6 +145,13 @@ public class MoreSuggestionsView extends KeyboardView implements MoreKeysPanel {
|
||||||
// Nothing to do with.
|
// Nothing to do with.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private final View.OnTouchListener mMotionEventDelegate = new View.OnTouchListener() {
|
||||||
|
@Override
|
||||||
|
public boolean onTouch(View view, MotionEvent me) {
|
||||||
|
return MoreSuggestionsView.this.dispatchTouchEvent(me);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void showMoreKeysPanel(View parentView, Controller controller, int pointX, int pointY,
|
public void showMoreKeysPanel(View parentView, Controller controller, int pointX, int pointY,
|
||||||
PopupWindow window, KeyboardActionListener listener) {
|
PopupWindow window, KeyboardActionListener listener) {
|
||||||
|
@ -163,6 +170,10 @@ public class MoreSuggestionsView extends KeyboardView implements MoreKeysPanel {
|
||||||
- (container.getMeasuredHeight() - container.getPaddingBottom())
|
- (container.getMeasuredHeight() - container.getPaddingBottom())
|
||||||
+ parentView.getPaddingTop() + mCoordinates[1];
|
+ parentView.getPaddingTop() + mCoordinates[1];
|
||||||
|
|
||||||
|
container.setOnTouchListener(mMotionEventDelegate);
|
||||||
|
window.setInputMethodMode(PopupWindow.INPUT_METHOD_NOT_NEEDED);
|
||||||
|
window.setFocusable(true);
|
||||||
|
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());
|
||||||
|
@ -217,6 +228,19 @@ public class MoreSuggestionsView extends KeyboardView implements MoreKeysPanel {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean dispatchTouchEvent(MotionEvent me) {
|
||||||
|
final int x = (int)me.getX();
|
||||||
|
final int y = (int)me.getY();
|
||||||
|
final boolean inside = (x >= 0 && x < getWidth() && y >= 0 && y < getHeight());
|
||||||
|
if (inside) {
|
||||||
|
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();
|
||||||
|
|
Loading…
Reference in a new issue