summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Charles Mendis <cmendis@google.com> 2016-12-19 19:05:49 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2016-12-19 19:05:53 +0000
commita586b546c3f6cf60612642ec9ad461fbdbe5dfb2 (patch)
treef030ed111a50990b75385a58b6c3f4bf9fc51a41
parent536dc4ecc4367d9569477528f48e4e7ceb03c5a4 (diff)
parent67639a5f678f3e472210e5cf6060592430a5ffbb (diff)
Merge "Fix OnCancelListener for Dialogs on swipe to dismiss." into cw-f-dev
-rw-r--r--core/java/android/app/Dialog.java5
-rw-r--r--core/java/android/view/Window.java25
-rw-r--r--core/java/com/android/internal/policy/PhoneWindow.java1
3 files changed, 31 insertions, 0 deletions
diff --git a/core/java/android/app/Dialog.java b/core/java/android/app/Dialog.java
index 9c1778010f43..72ccf72d2d05 100644
--- a/core/java/android/app/Dialog.java
+++ b/core/java/android/app/Dialog.java
@@ -185,6 +185,11 @@ public class Dialog implements DialogInterface, Window.Callback,
mWindow = w;
w.setCallback(this);
w.setOnWindowDismissedCallback(this);
+ w.setOnWindowSwipeDismissedCallback(() -> {
+ if (mCancelable) {
+ cancel();
+ }
+ });
w.setWindowManager(mWindowManager, null, null);
w.setGravity(Gravity.CENTER);
diff --git a/core/java/android/view/Window.java b/core/java/android/view/Window.java
index a36127db559f..c3ae9d9ef1c1 100644
--- a/core/java/android/view/Window.java
+++ b/core/java/android/view/Window.java
@@ -275,6 +275,7 @@ public abstract class Window {
private TypedArray mWindowStyle;
private Callback mCallback;
private OnWindowDismissedCallback mOnWindowDismissedCallback;
+ private OnWindowSwipeDismissedCallback mOnWindowSwipeDismissedCallback;
private WindowControllerCallback mWindowControllerCallback;
private OnRestrictedCaptionAreaChangedListener mOnRestrictedCaptionAreaChangedListener;
private Rect mRestrictedCaptionAreaRect;
@@ -588,6 +589,18 @@ public abstract class Window {
}
/** @hide */
+ public interface OnWindowSwipeDismissedCallback {
+ /**
+ * Called when a window is swipe dismissed. This informs the callback that the
+ * window is gone, and it should finish itself.
+ * @param finishTask True if the task should also be finished.
+ * @param suppressWindowTransition True if the resulting exit and enter window transition
+ * animations should be suppressed.
+ */
+ void onWindowSwipeDismissed();
+ }
+
+ /** @hide */
public interface WindowControllerCallback {
/**
* Moves the activity from
@@ -881,6 +894,18 @@ public abstract class Window {
}
/** @hide */
+ public final void setOnWindowSwipeDismissedCallback(OnWindowSwipeDismissedCallback sdcb) {
+ mOnWindowSwipeDismissedCallback = sdcb;
+ }
+
+ /** @hide */
+ public final void dispatchOnWindowSwipeDismissed() {
+ if (mOnWindowSwipeDismissedCallback != null) {
+ mOnWindowSwipeDismissedCallback.onWindowSwipeDismissed();
+ }
+ }
+
+ /** @hide */
public final void setWindowControllerCallback(WindowControllerCallback wccb) {
mWindowControllerCallback = wccb;
}
diff --git a/core/java/com/android/internal/policy/PhoneWindow.java b/core/java/com/android/internal/policy/PhoneWindow.java
index 5d25b1b9de08..920a6cb0f84c 100644
--- a/core/java/com/android/internal/policy/PhoneWindow.java
+++ b/core/java/com/android/internal/policy/PhoneWindow.java
@@ -2990,6 +2990,7 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
swipeDismiss.setOnDismissedListener(new SwipeDismissLayout.OnDismissedListener() {
@Override
public void onDismissed(SwipeDismissLayout layout) {
+ dispatchOnWindowSwipeDismissed();
dispatchOnWindowDismissed(false /*finishTask*/, true /*suppressWindowTransition*/);
}
});