diff options
Diffstat (limited to 'core/java/android/widget/PopupWindow.java')
-rw-r--r-- | core/java/android/widget/PopupWindow.java | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/core/java/android/widget/PopupWindow.java b/core/java/android/widget/PopupWindow.java index 90fbb77..d86b674 100644 --- a/core/java/android/widget/PopupWindow.java +++ b/core/java/android/widget/PopupWindow.java @@ -817,6 +817,7 @@ public class PopupWindow { * @param p the layout parameters of the popup's content view */ private void invokePopup(WindowManager.LayoutParams p) { + p.packageName = mContext.getPackageName(); mWindowManager.addView(mPopupView, p); } @@ -1322,8 +1323,16 @@ public class PopupWindow { @Override public boolean dispatchKeyEvent(KeyEvent event) { if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) { - dismiss(); - return true; + if (event.getAction() == KeyEvent.ACTION_DOWN + && event.getRepeatCount() == 0) { + getKeyDispatcherState().startTracking(event, this); + return true; + } else if (event.getAction() == KeyEvent.ACTION_UP + && event.isTracking() && !event.isCanceled()) { + dismiss(); + return true; + } + return super.dispatchKeyEvent(event); } else { return super.dispatchKeyEvent(event); } |