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:
Adrian Roos
2016-04-27 09:59:08 -07:00
parent 9fa8b54589
commit fa139757aa
3 changed files with 17 additions and 2 deletions

View File

@@ -250,6 +250,7 @@ public class RemoteInputView extends LinearLayout implements View.OnClickListene
findScrollContainer();
if (mScrollContainer != null) {
mScrollContainer.requestDisallowLongPress();
mScrollContainer.requestDisallowDismiss();
}
}
return super.onInterceptTouchEvent(ev);

View File

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

View File

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