summaryrefslogtreecommitdiffstats
path: root/core/java/android/app/AlertDialog.java
diff options
context:
space:
mode:
Diffstat (limited to 'core/java/android/app/AlertDialog.java')
-rw-r--r--core/java/android/app/AlertDialog.java19
1 files changed, 19 insertions, 0 deletions
diff --git a/core/java/android/app/AlertDialog.java b/core/java/android/app/AlertDialog.java
index 4a629bb..ac3ca55 100644
--- a/core/java/android/app/AlertDialog.java
+++ b/core/java/android/app/AlertDialog.java
@@ -28,6 +28,7 @@ import android.util.Log;
import android.util.TypedValue;
import android.view.ContextThemeWrapper;
import android.view.KeyEvent;
+import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
import android.widget.AdapterView;
@@ -81,6 +82,24 @@ public class AlertDialog extends Dialog implements DialogInterface {
return outValue.resourceId;
}
+ @Override
+ public boolean onTouchEvent(MotionEvent ev) {
+ if (mCancelable) {
+ final View decor = mWindow.getDecorView();
+ final int width = decor.getWidth();
+ final int height = decor.getHeight();
+ final float x = ev.getX();
+ final float y = ev.getY();
+
+ if (mCancelable && (x < 0 || x > width || y < 0 || y > height)) {
+ cancel();
+ return true;
+ }
+ }
+
+ return super.onTouchEvent(ev);
+ }
+
/**
* Gets one of the buttons used in the dialog.
* <p>