Fix OnCancelListener for Dialogs on swipe to dismiss.
am: 67639a5f67
Change-Id: I92bc472b3519020eeadf61b1e8047aee9e8bd96c
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
@@ -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;
|
||||
@@ -587,6 +588,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 {
|
||||
/**
|
||||
@@ -880,6 +893,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;
|
||||
|
||||
@@ -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*/);
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user