Fix OnCancelListener for Dialogs on swipe to dismiss. am: 67639a5f67 am: 5a0c0ffd03

am: 95ccfb0dcc

Change-Id: I25f9462c60a59582d26a68c2cc7a2ca5a1c11857
This commit is contained in:
Michael Kwan
2016-12-19 19:34:41 +00:00
committed by android-build-merger
3 changed files with 31 additions and 0 deletions

View File

@@ -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);

View File

@@ -274,6 +274,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;
@@ -586,6 +587,18 @@ public abstract class Window {
void onWindowDismissed(boolean finishTask, boolean suppressWindowTransition);
}
/** @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 {
/**
@@ -879,6 +892,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;