Preventing dock target from showing for single tasks.
Change-Id: I2a73c085e3777ac79f2846e1ba59f7c65bc3f9d0
diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java b/packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java
index 501f052..0d9a1c4 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java
@@ -93,12 +93,6 @@
private RecentsTransitionHelper mTransitionHelper;
private RecentsViewTouchHandler mTouchHandler;
- private TaskStack.DockState[] mVisibleDockStates = {
- TaskStack.DockState.LEFT,
- TaskStack.DockState.TOP,
- TaskStack.DockState.RIGHT,
- TaskStack.DockState.BOTTOM,
- };
private final Interpolator mFastOutSlowInInterpolator;
private final Interpolator mFastOutLinearInInterpolator;
@@ -435,8 +429,9 @@
@Override
protected void dispatchDraw(Canvas canvas) {
super.dispatchDraw(canvas);
- for (int i = mVisibleDockStates.length - 1; i >= 0; i--) {
- Drawable d = mVisibleDockStates[i].viewState.dockAreaOverlay;
+ ArrayList<TaskStack.DockState> visDockStates = mTouchHandler.getVisibleDockStates();
+ for (int i = visDockStates.size() - 1; i >= 0; i--) {
+ Drawable d = visDockStates.get(i).viewState.dockAreaOverlay;
if (d.getAlpha() > 0) {
d.draw(canvas);
}
@@ -445,8 +440,9 @@
@Override
protected boolean verifyDrawable(Drawable who) {
- for (int i = mVisibleDockStates.length - 1; i >= 0; i--) {
- Drawable d = mVisibleDockStates[i].viewState.dockAreaOverlay;
+ ArrayList<TaskStack.DockState> visDockStates = mTouchHandler.getVisibleDockStates();
+ for (int i = visDockStates.size() - 1; i >= 0; i--) {
+ Drawable d = visDockStates.get(i).viewState.dockAreaOverlay;
if (d == who) {
return true;
}
@@ -674,7 +670,9 @@
if (newDockStates != null) {
Collections.addAll(newDockStatesSet, newDockStates);
}
- for (TaskStack.DockState dockState : mVisibleDockStates) {
+ ArrayList<TaskStack.DockState> visDockStates = mTouchHandler.getVisibleDockStates();
+ for (int i = visDockStates.size() - 1; i >= 0; i--) {
+ TaskStack.DockState dockState = visDockStates.get(i);
TaskStack.DockState.ViewState viewState = dockState.viewState;
if (newDockStates == null || !newDockStatesSet.contains(dockState)) {
// This is no longer visible, so hide it
diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/RecentsViewTouchHandler.java b/packages/SystemUI/src/com/android/systemui/recents/views/RecentsViewTouchHandler.java
index 0ca46a0..d8698ee 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/views/RecentsViewTouchHandler.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/views/RecentsViewTouchHandler.java
@@ -71,6 +71,7 @@
private DropTarget mLastDropTarget;
private ArrayList<DropTarget> mDropTargets = new ArrayList<>();
+ private ArrayList<TaskStack.DockState> mVisibleDockStates = new ArrayList<>();
public RecentsViewTouchHandler(RecentsView rv) {
mRv = rv;
@@ -97,6 +98,13 @@
return dockStates;
}
+ /**
+ * Returns the set of visible dock states for this current drag.
+ */
+ public ArrayList<TaskStack.DockState> getVisibleDockStates() {
+ return mVisibleDockStates;
+ }
+
/** Touch preprocessing for handling below */
public boolean onInterceptTouchEvent(MotionEvent ev) {
handleTouchEvent(ev);
@@ -130,11 +138,13 @@
mTaskView.setTranslationX(x);
mTaskView.setTranslationY(y);
- if (!ssp.hasDockedTask()) {
+ mVisibleDockStates.clear();
+ if (!ssp.hasDockedTask() && mRv.getTaskStack().getTaskCount() > 1) {
// Add the dock state drop targets (these take priority)
TaskStack.DockState[] dockStates = getDockStatesForCurrentOrientation();
for (TaskStack.DockState dockState : dockStates) {
registerDropTargetForCurrentDrag(dockState);
+ mVisibleDockStates.add(dockState);
}
}