summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRomain Guy <romainguy@android.com>2010-03-17 15:29:21 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2010-03-17 15:29:21 -0700
commita15f4a46adcd31e0b20532ad6b13b76a9dd7090d (patch)
tree3590ad8ede0b5163aa8def97a6b9c8e996db9669
parent2babee6604476c80385e70b67612a96663a19244 (diff)
parent92be82e6a85bfe6f86400eb46d7c5e8ec5787b3c (diff)
downloadframeworks_base-a15f4a46adcd31e0b20532ad6b13b76a9dd7090d.zip
frameworks_base-a15f4a46adcd31e0b20532ad6b13b76a9dd7090d.tar.gz
frameworks_base-a15f4a46adcd31e0b20532ad6b13b76a9dd7090d.tar.bz2
Merge "Prevent crash when dismissing a PopupWindow that didn't have time to show up. Bug #2520981"
-rw-r--r--core/java/android/widget/PopupWindow.java22
1 files changed, 12 insertions, 10 deletions
diff --git a/core/java/android/widget/PopupWindow.java b/core/java/android/widget/PopupWindow.java
index cf2ed86..0378328 100644
--- a/core/java/android/widget/PopupWindow.java
+++ b/core/java/android/widget/PopupWindow.java
@@ -1048,16 +1048,18 @@ public class PopupWindow {
if (isShowing() && mPopupView != null) {
unregisterForScrollChanged();
- mWindowManager.removeView(mPopupView);
-
- if (mPopupView != mContentView && mPopupView instanceof ViewGroup) {
- ((ViewGroup) mPopupView).removeView(mContentView);
- }
- mPopupView = null;
- mIsShowing = false;
-
- if (mOnDismissListener != null) {
- mOnDismissListener.onDismiss();
+ try {
+ mWindowManager.removeView(mPopupView);
+ } finally {
+ if (mPopupView != mContentView && mPopupView instanceof ViewGroup) {
+ ((ViewGroup) mPopupView).removeView(mContentView);
+ }
+ mPopupView = null;
+ mIsShowing = false;
+
+ if (mOnDismissListener != null) {
+ mOnDismissListener.onDismiss();
+ }
}
}
}