summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher3
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/launcher3')
-rw-r--r--src/com/android/launcher3/PagedView.java6
-rw-r--r--src/com/android/launcher3/Workspace.java19
2 files changed, 20 insertions, 5 deletions
diff --git a/src/com/android/launcher3/PagedView.java b/src/com/android/launcher3/PagedView.java
index cc9a07582..275195b71 100644
--- a/src/com/android/launcher3/PagedView.java
+++ b/src/com/android/launcher3/PagedView.java
@@ -652,7 +652,6 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc
// We measure the dimensions of the PagedView to be larger than the pages so that when we
// zoom out (and scale down), the view is still contained in the parent
- View parent = (View) getParent();
int widthMode = MeasureSpec.getMode(widthMeasureSpec);
int widthSize = MeasureSpec.getSize(widthMeasureSpec);
int heightMode = MeasureSpec.getMode(heightMeasureSpec);
@@ -727,8 +726,9 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc
// ensure that the cache is filled with good values.
invalidateCachedOffsets();
- if (mChildCountOnLastMeasure != getChildCount() && !mDeferringForDelete) {
- setCurrentPage(mCurrentPage);
+ if (mScroller.isFinished() && mChildCountOnLastMeasure != getChildCount() &&
+ !mDeferringForDelete) {
+ setCurrentPage(getNextPage());
}
mChildCountOnLastMeasure = getChildCount();
diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java
index cd31722d7..2ab4bbd93 100644
--- a/src/com/android/launcher3/Workspace.java
+++ b/src/com/android/launcher3/Workspace.java
@@ -171,6 +171,8 @@ public class Workspace extends SmoothPagedView
boolean mIsDragOccuring = false;
boolean mChildrenLayersEnabled = true;
+ private boolean mStripScreensOnPageStopMoving = false;
+
/** Is the user is dragging an item near the edge of a page? */
private boolean mInScrollArea = false;
@@ -582,6 +584,12 @@ public class Workspace extends SmoothPagedView
}
public void stripEmptyScreens() {
+ if (isPageMoving()) {
+ mStripScreensOnPageStopMoving = true;
+ return;
+ }
+
+ int currentPage = getNextPage();
ArrayList<Long> removeScreens = new ArrayList<Long>();
for (Long id: mWorkspaceScreens.keySet()) {
CellLayout cl = mWorkspaceScreens.get(id);
@@ -595,17 +603,20 @@ public class Workspace extends SmoothPagedView
CellLayout cl = mWorkspaceScreens.get(id);
mWorkspaceScreens.remove(id);
mScreenOrder.remove(id);
- if (indexOfChild(cl) < mCurrentPage) {
+ if (indexOfChild(cl) < currentPage) {
pageShift++;
}
removeView(cl);
}
- setCurrentPage(mCurrentPage - pageShift);
if (!removeScreens.isEmpty()) {
// Update the model if we have changed any screens
mLauncher.getModel().updateWorkspaceScreenOrder(mLauncher, mScreenOrder);
}
+
+ if (pageShift >= 0) {
+ setCurrentPage(currentPage - pageShift);
+ }
}
// See implementation for parameter definition.
@@ -901,6 +912,10 @@ public class Workspace extends SmoothPagedView
mDelayedSnapToPageRunnable.run();
mDelayedSnapToPageRunnable = null;
}
+ if (mStripScreensOnPageStopMoving) {
+ stripEmptyScreens();
+ mStripScreensOnPageStopMoving = false;
+ }
}
@Override