Merge "Blocking alpha animation if the initial and final state for the animation are both 0" into ub-launcher3-calgary
diff --git a/src/com/android/launcher3/Alarm.java b/src/com/android/launcher3/Alarm.java
index e9f1fd9..d5b434c 100644
--- a/src/com/android/launcher3/Alarm.java
+++ b/src/com/android/launcher3/Alarm.java
@@ -17,6 +17,7 @@
package com.android.launcher3;
import android.os.Handler;
+import android.os.SystemClock;
public class Alarm implements Runnable{
// if we reach this time and the alarm hasn't been cancelled, call the listener
@@ -41,9 +42,16 @@
// Sets the alarm to go off in a certain number of milliseconds. If the alarm is already set,
// it's overwritten and only the new alarm setting is used
public void setAlarm(long millisecondsInFuture) {
- long currentTime = System.currentTimeMillis();
+ long currentTime = SystemClock.uptimeMillis();
mAlarmPending = true;
+ long oldTriggerTime = mAlarmTriggerTime;
mAlarmTriggerTime = currentTime + millisecondsInFuture;
+
+ // If the previous alarm was set for a longer duration, cancel it.
+ if (mWaitingForCallback && oldTriggerTime > mAlarmTriggerTime) {
+ mHandler.removeCallbacks(this);
+ mWaitingForCallback = false;
+ }
if (!mWaitingForCallback) {
mHandler.postDelayed(this, mAlarmTriggerTime - currentTime);
mWaitingForCallback = true;
@@ -51,15 +59,14 @@
}
public void cancelAlarm() {
- mAlarmTriggerTime = 0;
mAlarmPending = false;
}
// this is called when our timer runs out
public void run() {
mWaitingForCallback = false;
- if (mAlarmTriggerTime != 0) {
- long currentTime = System.currentTimeMillis();
+ if (mAlarmPending) {
+ long currentTime = SystemClock.uptimeMillis();
if (mAlarmTriggerTime > currentTime) {
// We still need to wait some time to trigger spring loaded mode--
// post a new callback
diff --git a/src/com/android/launcher3/ButtonDropTarget.java b/src/com/android/launcher3/ButtonDropTarget.java
index 5a4ed2f..0f6073e 100644
--- a/src/com/android/launcher3/ButtonDropTarget.java
+++ b/src/com/android/launcher3/ButtonDropTarget.java
@@ -62,6 +62,8 @@
/** Whether this drop target is active for the current drag */
protected boolean mActive;
+ /** Whether an accessible drag is in progress */
+ private boolean mAccessibleDrag;
/** An item must be dragged at least this many pixels before this drop target is enabled. */
private final int mDragDistanceThreshold;
@@ -218,8 +220,8 @@
@Override
public boolean isDropEnabled() {
- return mActive
- && mLauncher.getDragController().getDistanceDragged() >= mDragDistanceThreshold;
+ return mActive && (mAccessibleDrag ||
+ mLauncher.getDragController().getDistanceDragged() >= mDragDistanceThreshold);
}
@Override
@@ -307,6 +309,7 @@
}
public void enableAccessibleDrag(boolean enable) {
+ mAccessibleDrag = enable;
setOnClickListener(enable ? this : null);
}
diff --git a/src/com/android/launcher3/DeviceProfile.java b/src/com/android/launcher3/DeviceProfile.java
index 15f47b4..e6802bd 100644
--- a/src/com/android/launcher3/DeviceProfile.java
+++ b/src/com/android/launcher3/DeviceProfile.java
@@ -589,9 +589,9 @@
return new int[] {0, 0};
}
- // In landscape, we just match the vertical display width
- int containerWidth = heightPx;
- int padding = (availableWidthPx - containerWidth) / 2;
+ // In landscape, we match the width of the workspace
+ int padding = (pageIndicatorLandGutterRightNavBarPx +
+ hotseatBarHeightPx + hotseatLandGutterPx + mInsets.left) / 2;
return new int[]{ padding, padding };
}
}
diff --git a/src/com/android/launcher3/Hotseat.java b/src/com/android/launcher3/Hotseat.java
index 7c0ed10..c738480 100644
--- a/src/com/android/launcher3/Hotseat.java
+++ b/src/com/android/launcher3/Hotseat.java
@@ -165,11 +165,9 @@
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
// We don't want any clicks to go through to the hotseat unless the workspace is in
- // the normal state.
- if (mLauncher.getWorkspace().workspaceInModalState()) {
- return true;
- }
- return false;
+ // the normal state or an accessible drag is in progress.
+ return mLauncher.getWorkspace().workspaceInModalState() &&
+ !mLauncher.getAccessibilityDelegate().isInAccessibleDrag();
}
@Override
diff --git a/src/com/android/launcher3/PagedView.java b/src/com/android/launcher3/PagedView.java
index 2758a7c..bea55d2 100644
--- a/src/com/android/launcher3/PagedView.java
+++ b/src/com/android/launcher3/PagedView.java
@@ -1800,6 +1800,7 @@
case MotionEvent.ACTION_CANCEL:
if (mTouchState == TOUCH_STATE_SCROLLING) {
snapToDestination();
+ onScrollInteractionEnd();
}
resetTouchState();
break;
diff --git a/tests/src/com/android/launcher3/util/Wait.java b/tests/src/com/android/launcher3/util/Wait.java
index 02a1913..f9e53ba 100644
--- a/tests/src/com/android/launcher3/util/Wait.java
+++ b/tests/src/com/android/launcher3/util/Wait.java
@@ -25,6 +25,15 @@
}
SystemClock.sleep(sleepMillis);
}
+
+ // Check once more before returning false.
+ try {
+ if (condition.isTrue()) {
+ return true;
+ }
+ } catch (Throwable t) {
+ // Ignore
+ }
return false;
}
}