Prevent dismissal on RemoteInputView
Prevents swiping out a notification when started on the RemoteInputView, as this can easily happen during text manipulation otherwise. Change-Id: I8f658eab88ca1daf8ffcb7a5d1fac4468f5f0845 Fixes: 28336831
This commit is contained in:
@@ -250,6 +250,7 @@ public class RemoteInputView extends LinearLayout implements View.OnClickListene
|
||||
findScrollContainer();
|
||||
if (mScrollContainer != null) {
|
||||
mScrollContainer.requestDisallowLongPress();
|
||||
mScrollContainer.requestDisallowDismiss();
|
||||
}
|
||||
}
|
||||
return super.onInterceptTouchEvent(ev);
|
||||
|
||||
@@ -231,6 +231,7 @@ public class NotificationStackScrollLayout extends ViewGroup
|
||||
* animating.
|
||||
*/
|
||||
private boolean mOnlyScrollingInThisMotion;
|
||||
private boolean mDisallowDismissInThisMotion;
|
||||
private boolean mInterceptDelegateEnabled;
|
||||
private boolean mDelegateToScrollView;
|
||||
private boolean mDisallowScrollingInThisMotion;
|
||||
@@ -1023,7 +1024,8 @@ public class NotificationStackScrollLayout extends ViewGroup
|
||||
if (!mIsBeingDragged
|
||||
&& !mExpandingNotification
|
||||
&& !mExpandedInThisMotion
|
||||
&& !mOnlyScrollingInThisMotion) {
|
||||
&& !mOnlyScrollingInThisMotion
|
||||
&& !mDisallowDismissInThisMotion) {
|
||||
horizontalSwipeWantsIt = mSwipeHelper.onTouchEvent(ev);
|
||||
}
|
||||
return horizontalSwipeWantsIt || scrollerWantsIt || expandWantsIt || super.onTouchEvent(ev);
|
||||
@@ -2003,7 +2005,8 @@ public class NotificationStackScrollLayout extends ViewGroup
|
||||
if (!mIsBeingDragged
|
||||
&& !mExpandingNotification
|
||||
&& !mExpandedInThisMotion
|
||||
&& !mOnlyScrollingInThisMotion) {
|
||||
&& !mOnlyScrollingInThisMotion
|
||||
&& !mDisallowDismissInThisMotion) {
|
||||
swipeWantsIt = mSwipeHelper.onInterceptTouchEvent(ev);
|
||||
}
|
||||
return swipeWantsIt || scrollWantsIt || expandWantsIt || super.onInterceptTouchEvent(ev);
|
||||
@@ -2031,6 +2034,7 @@ public class NotificationStackScrollLayout extends ViewGroup
|
||||
mExpandedInThisMotion = false;
|
||||
mOnlyScrollingInThisMotion = !mScroller.isFinished();
|
||||
mDisallowScrollingInThisMotion = false;
|
||||
mDisallowDismissInThisMotion = false;
|
||||
mTouchIsClick = true;
|
||||
mInitialTouchX = ev.getX();
|
||||
mInitialTouchY = ev.getY();
|
||||
@@ -2695,6 +2699,11 @@ public class NotificationStackScrollLayout extends ViewGroup
|
||||
removeLongPressCallback();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void requestDisallowDismiss() {
|
||||
mDisallowDismissInThisMotion = true;
|
||||
}
|
||||
|
||||
public void removeLongPressCallback() {
|
||||
mSwipeHelper.removeLongPressCallback();
|
||||
}
|
||||
|
||||
@@ -33,4 +33,9 @@ public interface ScrollContainer {
|
||||
* Request that the view is made visible by scrolling to it.
|
||||
*/
|
||||
void scrollTo(View v);
|
||||
|
||||
/**
|
||||
* Request that the view does not dismiss for the current touch.
|
||||
*/
|
||||
void requestDisallowDismiss();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user