Fixing issue where the outline is on the wrong side of the screen when dragging to final page.
- Also allowing pages to snap in springloaded mode without moving your finger.
Change-Id: I868f700bd740f2cd1e02023e1dee0f66b0799c58
diff --git a/src/com/android/launcher2/DragController.java b/src/com/android/launcher2/DragController.java
index 44556cf..8658eeb 100644
--- a/src/com/android/launcher2/DragController.java
+++ b/src/com/android/launcher2/DragController.java
@@ -525,6 +525,12 @@
}
}
+ public void forceMoveEvent() {
+ if (mDragging) {
+ handleMoveEvent(mDragObject.x, mDragObject.y);
+ }
+ }
+
/**
* Call this from a drag source view.
*/
@@ -558,12 +564,14 @@
// Ensure that we've processed a move event at the current pointer location.
handleMoveEvent(dragLayerX, dragLayerY);
+ mHandler.removeCallbacks(mScrollRunnable);
if (mDragging) {
drop(dragLayerX, dragLayerY);
}
endDrag();
break;
case MotionEvent.ACTION_CANCEL:
+ mHandler.removeCallbacks(mScrollRunnable);
cancelDrag();
break;
}
@@ -690,7 +698,7 @@
if (isDragging()) {
// Force an update so that we can requeue the scroller if necessary
- handleMoveEvent(mDragObject.x, mDragObject.y);
+ forceMoveEvent();
}
}
}
diff --git a/src/com/android/launcher2/SpringLoadedDragController.java b/src/com/android/launcher2/SpringLoadedDragController.java
index 358362c..d96aab7 100644
--- a/src/com/android/launcher2/SpringLoadedDragController.java
+++ b/src/com/android/launcher2/SpringLoadedDragController.java
@@ -18,7 +18,7 @@
public class SpringLoadedDragController implements OnAlarmListener {
// how long the user must hover over a mini-screen before it unshrinks
- final long ENTER_SPRING_LOAD_HOVER_TIME = 550;
+ final long ENTER_SPRING_LOAD_HOVER_TIME = 500;
final long ENTER_SPRING_LOAD_CANCEL_HOVER_TIME = 950;
final long EXIT_SPRING_LOAD_HOVER_TIME = 200;
diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java
index bb4c264..6fb664a 100644
--- a/src/com/android/launcher2/Workspace.java
+++ b/src/com/android/launcher2/Workspace.java
@@ -705,9 +705,15 @@
clearChildrenCache();
}
- // Hide the outlines, as long as we're not dragging
- if (!mDragController.dragging()) {
- // Only hide page outlines as we pan if we are on large screen
+
+ if (mDragController.isDragging()) {
+ if (isSmall()) {
+ // If we are in springloaded mode, then force an event to check if the current touch
+ // is under a new page (to scroll to)
+ mDragController.forceMoveEvent();
+ }
+ } else {
+ // If we are not mid-dragging, hide the page outlines if we are on a large screen
if (LauncherApplication.isScreenLarge()) {
hideOutlines();
}
@@ -2485,7 +2491,11 @@
v.getMatrix().invert(mTempInverseMatrix);
cachedInverseMatrix = mTempInverseMatrix;
}
- xy[0] = xy[0] + mScrollX - v.getLeft();
+ int scrollX = mScrollX;
+ if (mNextPage != INVALID_PAGE) {
+ scrollX = mScroller.getFinalX();
+ }
+ xy[0] = xy[0] + scrollX - v.getLeft();
xy[1] = xy[1] + mScrollY - v.getTop();
cachedInverseMatrix.mapPoints(xy);
}
@@ -2507,7 +2517,11 @@
*/
void mapPointFromChildToSelf(View v, float[] xy) {
v.getMatrix().mapPoints(xy);
- xy[0] -= (mScrollX - v.getLeft());
+ int scrollX = mScrollX;
+ if (mNextPage != INVALID_PAGE) {
+ scrollX = mScroller.getFinalX();
+ }
+ xy[0] -= (scrollX - v.getLeft());
xy[1] -= (mScrollY - v.getTop());
}