Merge "Allowing taskView to have focusable children (using taskOverlays)" into ub-launcher3-edmonton-polish
diff --git a/src/com/android/launcher3/LauncherStateManager.java b/src/com/android/launcher3/LauncherStateManager.java
index 8b415d6..3c7c1aa 100644
--- a/src/com/android/launcher3/LauncherStateManager.java
+++ b/src/com/android/launcher3/LauncherStateManager.java
@@ -382,7 +382,9 @@
}
private void onStateTransitionStart(LauncherState state) {
- mState.onStateDisabled(mLauncher);
+ if (mState != state) {
+ mState.onStateDisabled(mLauncher);
+ }
mState = state;
mState.onStateEnabled(mLauncher);
mLauncher.getAppWidgetHost().setResumed(state == LauncherState.NORMAL);
diff --git a/src/com/android/launcher3/allapps/AllAppsContainerView.java b/src/com/android/launcher3/allapps/AllAppsContainerView.java
index 8993978..fdf32af 100644
--- a/src/com/android/launcher3/allapps/AllAppsContainerView.java
+++ b/src/com/android/launcher3/allapps/AllAppsContainerView.java
@@ -312,6 +312,12 @@
}
}
+ @Override
+ public int getCanvasClipTopForOverscroll() {
+ // Do not clip if the QSB is attached to the spring, otherwise the QSB will get clipped.
+ return mSpringViews.get(getSearchView().getId()) ? 0 : mHeader.getTop();
+ }
+
private void rebindAdapters(boolean showTabs) {
rebindAdapters(showTabs, false /* force */);
}
diff --git a/src/com/android/launcher3/views/SpringRelativeLayout.java b/src/com/android/launcher3/views/SpringRelativeLayout.java
index 5022d65..b0313ce 100644
--- a/src/com/android/launcher3/views/SpringRelativeLayout.java
+++ b/src/com/android/launcher3/views/SpringRelativeLayout.java
@@ -54,7 +54,7 @@
}
};
- private final SparseBooleanArray mSpringViews = new SparseBooleanArray();
+ protected final SparseBooleanArray mSpringViews = new SparseBooleanArray();
private final SpringAnimation mSpring;
private float mDampedScrollShift = 0;
@@ -85,12 +85,24 @@
invalidate();
}
+ /**
+ * Used to clip the canvas when drawing child views during overscroll.
+ */
+ public int getCanvasClipTopForOverscroll() {
+ return 0;
+ }
+
@Override
protected boolean drawChild(Canvas canvas, View child, long drawingTime) {
if (mDampedScrollShift != 0 && mSpringViews.get(child.getId())) {
+ int saveCount = canvas.save();
+
+ canvas.clipRect(0, getCanvasClipTopForOverscroll(), getWidth(), getHeight());
canvas.translate(0, mDampedScrollShift);
boolean result = super.drawChild(canvas, child, drawingTime);
- canvas.translate(0, -mDampedScrollShift);
+
+ canvas.restoreToCount(saveCount);
+
return result;
}
return super.drawChild(canvas, child, drawingTime);