diff options
Diffstat (limited to 'core/java/android/app/AlertDialog.java')
| -rw-r--r-- | core/java/android/app/AlertDialog.java | 19 |
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> |
