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;
|
mWindow = w;
|
||||||
w.setCallback(this);
|
w.setCallback(this);
|
||||||
w.setOnWindowDismissedCallback(this);
|
w.setOnWindowDismissedCallback(this);
|
||||||
|
w.setOnWindowSwipeDismissedCallback(() -> {
|
||||||
|
if (mCancelable) {
|
||||||
|
cancel();
|
||||||
|
}
|
||||||
|
});
|
||||||
w.setWindowManager(mWindowManager, null, null);
|
w.setWindowManager(mWindowManager, null, null);
|
||||||
w.setGravity(Gravity.CENTER);
|
w.setGravity(Gravity.CENTER);
|
||||||
|
|
||||||
|
|||||||
@@ -275,6 +275,7 @@ public abstract class Window {
|
|||||||
private TypedArray mWindowStyle;
|
private TypedArray mWindowStyle;
|
||||||
private Callback mCallback;
|
private Callback mCallback;
|
||||||
private OnWindowDismissedCallback mOnWindowDismissedCallback;
|
private OnWindowDismissedCallback mOnWindowDismissedCallback;
|
||||||
|
private OnWindowSwipeDismissedCallback mOnWindowSwipeDismissedCallback;
|
||||||
private WindowControllerCallback mWindowControllerCallback;
|
private WindowControllerCallback mWindowControllerCallback;
|
||||||
private OnRestrictedCaptionAreaChangedListener mOnRestrictedCaptionAreaChangedListener;
|
private OnRestrictedCaptionAreaChangedListener mOnRestrictedCaptionAreaChangedListener;
|
||||||
private Rect mRestrictedCaptionAreaRect;
|
private Rect mRestrictedCaptionAreaRect;
|
||||||
@@ -587,6 +588,18 @@ public abstract class Window {
|
|||||||
void onWindowDismissed(boolean finishTask, boolean suppressWindowTransition);
|
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 */
|
/** @hide */
|
||||||
public interface WindowControllerCallback {
|
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 */
|
/** @hide */
|
||||||
public final void setWindowControllerCallback(WindowControllerCallback wccb) {
|
public final void setWindowControllerCallback(WindowControllerCallback wccb) {
|
||||||
mWindowControllerCallback = wccb;
|
mWindowControllerCallback = wccb;
|
||||||
|
|||||||
@@ -2990,6 +2990,7 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
|
|||||||
swipeDismiss.setOnDismissedListener(new SwipeDismissLayout.OnDismissedListener() {
|
swipeDismiss.setOnDismissedListener(new SwipeDismissLayout.OnDismissedListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onDismissed(SwipeDismissLayout layout) {
|
public void onDismissed(SwipeDismissLayout layout) {
|
||||||
|
dispatchOnWindowSwipeDismissed();
|
||||||
dispatchOnWindowDismissed(false /*finishTask*/, true /*suppressWindowTransition*/);
|
dispatchOnWindowDismissed(false /*finishTask*/, true /*suppressWindowTransition*/);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user