OSDN Git Service

Allow custom content to lock the workspace
authorJan-Willem Maarse <maarse@google.com>
Thu, 10 Jul 2014 22:58:12 +0000 (15:58 -0700)
committerJan-Willem Maarse <maarse@google.com>
Tue, 15 Jul 2014 01:36:23 +0000 (18:36 -0700)
Change-Id: Ic337df1b2cd54b99d4ef02dcfaca955c90297df0

src/com/android/launcher3/Launcher.java
src/com/android/launcher3/Workspace.java

index a85b5b1..400cd24 100644 (file)
@@ -1089,6 +1089,9 @@ public class Launcher extends Activity
 
         // Custom content scroll progress changed. From 0 (not showing) to 1 (fully showing).
         public void onScrollProgressChanged(float progress);
+
+        // Indicates whether the user is allowed to scroll away from the custom content.
+        boolean isScrollingAllowed();
     }
 
     protected boolean hasSettings() {
index 48795af..a8e7580 100644 (file)
@@ -1159,12 +1159,20 @@ public class Workspace extends SmoothPagedView
                 (mTouchDownTime - mCustomContentShowTime) > CUSTOM_CONTENT_GESTURE_DELAY;
 
         boolean swipeInIgnoreDirection = isLayoutRtl() ? deltaX < 0 : deltaX > 0;
-        if (swipeInIgnoreDirection && getScreenIdForPageIndex(getCurrentPage()) ==
-                CUSTOM_CONTENT_SCREEN_ID && passRightSwipesToCustomContent) {
+        boolean onCustomContentScreen =
+                getScreenIdForPageIndex(getCurrentPage()) == CUSTOM_CONTENT_SCREEN_ID;
+        if (swipeInIgnoreDirection && onCustomContentScreen && passRightSwipesToCustomContent) {
             // Pass swipes to the right to the custom content page.
             return;
         }
 
+        if (onCustomContentScreen && (mCustomContentCallbacks != null)
+                && !mCustomContentCallbacks.isScrollingAllowed()) {
+            // Don't allow workspace scrolling if the current custom content screen doesn't allow
+            // scrolling.
+            return;
+        }
+
         if (theta > MAX_SWIPE_ANGLE) {
             // Above MAX_SWIPE_ANGLE, we don't want to ever start scrolling the workspace
             return;