OSDN Git Service

Prevent dismissal on RemoteInputView
authorAdrian Roos <roosa@google.com>
Wed, 27 Apr 2016 16:59:08 +0000 (09:59 -0700)
committerAdrian Roos <roosa@google.com>
Wed, 27 Apr 2016 16:59:15 +0000 (09:59 -0700)
Prevents swiping out a notification when started on
the RemoteInputView, as this can easily happen during
text manipulation otherwise.

Change-Id: I8f658eab88ca1daf8ffcb7a5d1fac4468f5f0845
Fixes: 28336831

packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputView.java
packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java
packages/SystemUI/src/com/android/systemui/statusbar/stack/ScrollContainer.java

index ecd1772..cad4327 100644 (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);
index 3e0f930..07d486a 100644 (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();
     }
index a35465e..64efa69 100644 (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();
 }