Move grid checking into the layout algorithm.
am: 26f637b555
Change-Id: Ie65d71bd7f6edb5e92f6dd331999424a592c8073
This commit is contained in:
@@ -201,6 +201,8 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener
|
|||||||
Resources res = mContext.getResources();
|
Resources res = mContext.getResources();
|
||||||
reloadResources();
|
reloadResources();
|
||||||
mDummyStackView.reloadOnConfigurationChange();
|
mDummyStackView.reloadOnConfigurationChange();
|
||||||
|
mDummyStackView.getStackAlgorithm().getGridState().setHasDockedTasks(
|
||||||
|
Recents.getSystemServices().hasDockedTask());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -716,7 +718,7 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener
|
|||||||
if (task.isFreeformTask()) {
|
if (task.isFreeformTask()) {
|
||||||
mTmpTransform = stackLayout.getStackTransformScreenCoordinates(task,
|
mTmpTransform = stackLayout.getStackTransformScreenCoordinates(task,
|
||||||
stackScroller.getStackScroll(), mTmpTransform, null,
|
stackScroller.getStackScroll(), mTmpTransform, null,
|
||||||
windowOverrideRect, false /* useGridLayout */);
|
windowOverrideRect);
|
||||||
Bitmap thumbnail = drawThumbnailTransitionBitmap(task, mTmpTransform,
|
Bitmap thumbnail = drawThumbnailTransitionBitmap(task, mTmpTransform,
|
||||||
mThumbTransitionBitmapCache);
|
mThumbTransitionBitmapCache);
|
||||||
Rect toTaskRect = new Rect();
|
Rect toTaskRect = new Rect();
|
||||||
@@ -767,8 +769,7 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener
|
|||||||
stackView.updateToInitialState();
|
stackView.updateToInitialState();
|
||||||
boolean isInSplitScreen = Recents.getSystemServices().hasDockedTask();
|
boolean isInSplitScreen = Recents.getSystemServices().hasDockedTask();
|
||||||
stackView.getStackAlgorithm().getStackTransformScreenCoordinates(launchTask,
|
stackView.getStackAlgorithm().getStackTransformScreenCoordinates(launchTask,
|
||||||
stackView.getScroller().getStackScroll(), mTmpTransform, null, windowOverrideRect,
|
stackView.getScroller().getStackScroll(), mTmpTransform, null, windowOverrideRect);
|
||||||
Recents.getConfiguration().isGridEnabled && !isInSplitScreen);
|
|
||||||
return mTmpTransform;
|
return mTmpTransform;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -342,8 +342,7 @@ public class RecentsView extends FrameLayout {
|
|||||||
|
|
||||||
if (RecentsDebugFlags.Static.EnableStackActionButton) {
|
if (RecentsDebugFlags.Static.EnableStackActionButton) {
|
||||||
// Measure the stack action button within the constraints of the space above the stack
|
// Measure the stack action button within the constraints of the space above the stack
|
||||||
Rect buttonBounds = mTaskStackView.mLayoutAlgorithm.getStackActionButtonRect(
|
Rect buttonBounds = mTaskStackView.mLayoutAlgorithm.getStackActionButtonRect();
|
||||||
mTaskStackView.useGridLayout());
|
|
||||||
measureChild(mStackActionButton,
|
measureChild(mStackActionButton,
|
||||||
MeasureSpec.makeMeasureSpec(buttonBounds.width(), MeasureSpec.AT_MOST),
|
MeasureSpec.makeMeasureSpec(buttonBounds.width(), MeasureSpec.AT_MOST),
|
||||||
MeasureSpec.makeMeasureSpec(buttonBounds.height(), MeasureSpec.AT_MOST));
|
MeasureSpec.makeMeasureSpec(buttonBounds.height(), MeasureSpec.AT_MOST));
|
||||||
@@ -778,8 +777,7 @@ public class RecentsView extends FrameLayout {
|
|||||||
* @return the bounds of the stack action button.
|
* @return the bounds of the stack action button.
|
||||||
*/
|
*/
|
||||||
private Rect getStackActionButtonBoundsFromStackLayout() {
|
private Rect getStackActionButtonBoundsFromStackLayout() {
|
||||||
Rect actionButtonRect = new Rect(mTaskStackView.mLayoutAlgorithm.getStackActionButtonRect(
|
Rect actionButtonRect = new Rect(mTaskStackView.mLayoutAlgorithm.getStackActionButtonRect());
|
||||||
mTaskStackView.useGridLayout()));
|
|
||||||
int left = isLayoutRtl()
|
int left = isLayoutRtl()
|
||||||
? actionButtonRect.left - mStackActionButton.getPaddingLeft()
|
? actionButtonRect.left - mStackActionButton.getPaddingLeft()
|
||||||
: actionButtonRect.right + mStackActionButton.getPaddingRight()
|
: actionButtonRect.right + mStackActionButton.getPaddingRight()
|
||||||
|
|||||||
@@ -157,7 +157,7 @@ public class TaskStackAnimationHelper {
|
|||||||
|
|
||||||
// Get the current transform for the task, which will be used to position it offscreen
|
// Get the current transform for the task, which will be used to position it offscreen
|
||||||
stackLayout.getStackTransform(task, stackScroller.getStackScroll(), mTmpTransform,
|
stackLayout.getStackTransform(task, stackScroller.getStackScroll(), mTmpTransform,
|
||||||
null, mStackView.useGridLayout());
|
null);
|
||||||
|
|
||||||
if (hideTask) {
|
if (hideTask) {
|
||||||
tv.setVisibility(View.INVISIBLE);
|
tv.setVisibility(View.INVISIBLE);
|
||||||
@@ -230,7 +230,7 @@ public class TaskStackAnimationHelper {
|
|||||||
// Get the current transform for the task, which will be updated to the final transform
|
// Get the current transform for the task, which will be updated to the final transform
|
||||||
// to animate to depending on how recents was invoked
|
// to animate to depending on how recents was invoked
|
||||||
stackLayout.getStackTransform(task, stackScroller.getStackScroll(), mTmpTransform,
|
stackLayout.getStackTransform(task, stackScroller.getStackScroll(), mTmpTransform,
|
||||||
null, mStackView.useGridLayout());
|
null);
|
||||||
|
|
||||||
if (launchState.launchedFromApp && !launchState.launchedViaDockGesture) {
|
if (launchState.launchedFromApp && !launchState.launchedViaDockGesture) {
|
||||||
if (task.isLaunchTarget) {
|
if (task.isLaunchTarget) {
|
||||||
|
|||||||
@@ -213,6 +213,41 @@ public class TaskStackLayoutAlgorithm {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The state telling the algorithm whether to use grid layout or not.
|
||||||
|
*/
|
||||||
|
public static class GridState {
|
||||||
|
private boolean mDraggingOverDockedState;
|
||||||
|
private boolean mHasDockedTask;
|
||||||
|
|
||||||
|
private GridState() {
|
||||||
|
mDraggingOverDockedState = false;
|
||||||
|
mHasDockedTask = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check whether we should use the grid layout.
|
||||||
|
* We use the grid layout for Recents iff all the following is true:
|
||||||
|
* 1. Grid-mode is enabled.
|
||||||
|
* 2. The activity is not in split screen mode (there's no docked task).
|
||||||
|
* 3. The user is not dragging a task view over the dock state.
|
||||||
|
* @return True if we should use the grid layout.
|
||||||
|
*/
|
||||||
|
boolean useGridLayout() {
|
||||||
|
return Recents.getConfiguration().isGridEnabled &&
|
||||||
|
!mDraggingOverDockedState &&
|
||||||
|
!mHasDockedTask;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDragging(boolean draggingOverDockedState) {
|
||||||
|
mDraggingOverDockedState = draggingOverDockedState;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setHasDockedTasks(boolean hasDockedTask) {
|
||||||
|
mHasDockedTask = hasDockedTask;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// A report of the visibility state of the stack
|
// A report of the visibility state of the stack
|
||||||
public class VisibilityReport {
|
public class VisibilityReport {
|
||||||
public int numVisibleTasks;
|
public int numVisibleTasks;
|
||||||
@@ -227,6 +262,7 @@ public class TaskStackLayoutAlgorithm {
|
|||||||
|
|
||||||
Context mContext;
|
Context mContext;
|
||||||
private StackState mState = StackState.SPLIT;
|
private StackState mState = StackState.SPLIT;
|
||||||
|
private GridState mGridState = new GridState();
|
||||||
private TaskStackLayoutAlgorithmCallbacks mCb;
|
private TaskStackLayoutAlgorithmCallbacks mCb;
|
||||||
|
|
||||||
// The task bounds (untransformed) for layout. This rect is anchored at mTaskRoot.
|
// The task bounds (untransformed) for layout. This rect is anchored at mTaskRoot.
|
||||||
@@ -733,8 +769,8 @@ public class TaskStackLayoutAlgorithm {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Rect getStackActionButtonRect(boolean useGridLayout) {
|
public Rect getStackActionButtonRect() {
|
||||||
return useGridLayout
|
return mGridState.useGridLayout()
|
||||||
? mTaskGridLayoutAlgorithm.getStackActionButtonRect() : mStackActionButtonRect;
|
? mTaskGridLayoutAlgorithm.getStackActionButtonRect() : mStackActionButtonRect;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -759,6 +795,13 @@ public class TaskStackLayoutAlgorithm {
|
|||||||
return mState;
|
return mState;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the current grid layout state.
|
||||||
|
*/
|
||||||
|
public GridState getGridState() {
|
||||||
|
return mGridState;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns whether this stack layout has been initialized.
|
* Returns whether this stack layout has been initialized.
|
||||||
*/
|
*/
|
||||||
@@ -842,26 +885,25 @@ public class TaskStackLayoutAlgorithm {
|
|||||||
* is what the view is measured and laid out with.
|
* is what the view is measured and laid out with.
|
||||||
*/
|
*/
|
||||||
public TaskViewTransform getStackTransform(Task task, float stackScroll,
|
public TaskViewTransform getStackTransform(Task task, float stackScroll,
|
||||||
TaskViewTransform transformOut, TaskViewTransform frontTransform,
|
TaskViewTransform transformOut, TaskViewTransform frontTransform) {
|
||||||
boolean useGridLayout) {
|
|
||||||
return getStackTransform(task, stackScroll, mFocusState, transformOut, frontTransform,
|
return getStackTransform(task, stackScroll, mFocusState, transformOut, frontTransform,
|
||||||
false /* forceUpdate */, false /* ignoreTaskOverrides */, useGridLayout);
|
false /* forceUpdate */, false /* ignoreTaskOverrides */);
|
||||||
}
|
}
|
||||||
|
|
||||||
public TaskViewTransform getStackTransform(Task task, float stackScroll,
|
public TaskViewTransform getStackTransform(Task task, float stackScroll,
|
||||||
TaskViewTransform transformOut, TaskViewTransform frontTransform,
|
TaskViewTransform transformOut, TaskViewTransform frontTransform,
|
||||||
boolean ignoreTaskOverrides, boolean useGridLayout) {
|
boolean ignoreTaskOverrides) {
|
||||||
return getStackTransform(task, stackScroll, mFocusState, transformOut, frontTransform,
|
return getStackTransform(task, stackScroll, mFocusState, transformOut, frontTransform,
|
||||||
false /* forceUpdate */, ignoreTaskOverrides, useGridLayout);
|
false /* forceUpdate */, ignoreTaskOverrides);
|
||||||
}
|
}
|
||||||
|
|
||||||
public TaskViewTransform getStackTransform(Task task, float stackScroll, int focusState,
|
public TaskViewTransform getStackTransform(Task task, float stackScroll, int focusState,
|
||||||
TaskViewTransform transformOut, TaskViewTransform frontTransform, boolean forceUpdate,
|
TaskViewTransform transformOut, TaskViewTransform frontTransform, boolean forceUpdate,
|
||||||
boolean ignoreTaskOverrides, boolean useGridLayout) {
|
boolean ignoreTaskOverrides) {
|
||||||
if (mFreeformLayoutAlgorithm.isTransformAvailable(task, this)) {
|
if (mFreeformLayoutAlgorithm.isTransformAvailable(task, this)) {
|
||||||
mFreeformLayoutAlgorithm.getTransform(task, transformOut, this);
|
mFreeformLayoutAlgorithm.getTransform(task, transformOut, this);
|
||||||
return transformOut;
|
return transformOut;
|
||||||
} else if (useGridLayout) {
|
} else if (mGridState.useGridLayout()) {
|
||||||
int taskIndex = mTaskIndexMap.get(task.key.id);
|
int taskIndex = mTaskIndexMap.get(task.key.id);
|
||||||
int taskCount = mTaskIndexMap.size();
|
int taskCount = mTaskIndexMap.size();
|
||||||
mTaskGridLayoutAlgorithm.getTransform(taskIndex, taskCount, transformOut, this);
|
mTaskGridLayoutAlgorithm.getTransform(taskIndex, taskCount, transformOut, this);
|
||||||
@@ -887,10 +929,10 @@ public class TaskStackLayoutAlgorithm {
|
|||||||
*/
|
*/
|
||||||
public TaskViewTransform getStackTransformScreenCoordinates(Task task, float stackScroll,
|
public TaskViewTransform getStackTransformScreenCoordinates(Task task, float stackScroll,
|
||||||
TaskViewTransform transformOut, TaskViewTransform frontTransform,
|
TaskViewTransform transformOut, TaskViewTransform frontTransform,
|
||||||
Rect windowOverrideRect, boolean useGridLayout) {
|
Rect windowOverrideRect) {
|
||||||
TaskViewTransform transform = getStackTransform(task, stackScroll, mFocusState,
|
TaskViewTransform transform = getStackTransform(task, stackScroll, mFocusState,
|
||||||
transformOut, frontTransform, true /* forceUpdate */,
|
transformOut, frontTransform, true /* forceUpdate */,
|
||||||
false /* ignoreTaskOverrides */, useGridLayout);
|
false /* ignoreTaskOverrides */);
|
||||||
return transformToScreenCoordinates(transform, windowOverrideRect);
|
return transformToScreenCoordinates(transform, windowOverrideRect);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -159,7 +159,6 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal
|
|||||||
private int mTaskCornerRadiusPx;
|
private int mTaskCornerRadiusPx;
|
||||||
private int mDividerSize;
|
private int mDividerSize;
|
||||||
private int mStartTimerIndicatorDuration;
|
private int mStartTimerIndicatorDuration;
|
||||||
private boolean mDraggingOverDockState;
|
|
||||||
|
|
||||||
@ViewDebug.ExportedProperty(category="recents")
|
@ViewDebug.ExportedProperty(category="recents")
|
||||||
private boolean mTaskViewsClipDirty = true;
|
private boolean mTaskViewsClipDirty = true;
|
||||||
@@ -501,13 +500,13 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal
|
|||||||
|
|
||||||
// Calculate the current and (if necessary) the target transform for the task
|
// Calculate the current and (if necessary) the target transform for the task
|
||||||
transform = mLayoutAlgorithm.getStackTransform(task, curStackScroll,
|
transform = mLayoutAlgorithm.getStackTransform(task, curStackScroll,
|
||||||
taskTransforms.get(i), frontTransform, ignoreTaskOverrides, useGridLayout());
|
taskTransforms.get(i), frontTransform, ignoreTaskOverrides);
|
||||||
if (useTargetStackScroll && !transform.visible) {
|
if (useTargetStackScroll && !transform.visible) {
|
||||||
// If we have a target stack scroll and the task is not currently visible, then we
|
// If we have a target stack scroll and the task is not currently visible, then we
|
||||||
// just update the transform at the new scroll
|
// just update the transform at the new scroll
|
||||||
// TODO: Optimize this
|
// TODO: Optimize this
|
||||||
transformAtTarget = mLayoutAlgorithm.getStackTransform(task, targetStackScroll,
|
transformAtTarget = mLayoutAlgorithm.getStackTransform(task, targetStackScroll,
|
||||||
new TaskViewTransform(), frontTransformAtTarget, useGridLayout());
|
new TaskViewTransform(), frontTransformAtTarget);
|
||||||
if (transformAtTarget.visible) {
|
if (transformAtTarget.visible) {
|
||||||
transform.copyFrom(transformAtTarget);
|
transform.copyFrom(transformAtTarget);
|
||||||
}
|
}
|
||||||
@@ -738,7 +737,7 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal
|
|||||||
} else {
|
} else {
|
||||||
mLayoutAlgorithm.getStackTransform(task, mStackScroller.getStackScroll(),
|
mLayoutAlgorithm.getStackTransform(task, mStackScroller.getStackScroll(),
|
||||||
focusState, transform, null, true /* forceUpdate */,
|
focusState, transform, null, true /* forceUpdate */,
|
||||||
false /* ignoreTaskOverrides */, useGridLayout());
|
false /* ignoreTaskOverrides */);
|
||||||
}
|
}
|
||||||
transform.visible = true;
|
transform.visible = true;
|
||||||
}
|
}
|
||||||
@@ -755,7 +754,7 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal
|
|||||||
Task task = tasks.get(i);
|
Task task = tasks.get(i);
|
||||||
TaskViewTransform transform = transformsOut.get(i);
|
TaskViewTransform transform = transformsOut.get(i);
|
||||||
mLayoutAlgorithm.getStackTransform(task, stackScroll, focusState, transform, null,
|
mLayoutAlgorithm.getStackTransform(task, stackScroll, focusState, transform, null,
|
||||||
true /* forceUpdate */, ignoreTaskOverrides, useGridLayout());
|
true /* forceUpdate */, ignoreTaskOverrides);
|
||||||
transform.visible = true;
|
transform.visible = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1836,7 +1835,7 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal
|
|||||||
// Enlarge the dragged view slightly
|
// Enlarge the dragged view slightly
|
||||||
float finalScale = event.taskView.getScaleX() * DRAG_SCALE_FACTOR;
|
float finalScale = event.taskView.getScaleX() * DRAG_SCALE_FACTOR;
|
||||||
mLayoutAlgorithm.getStackTransform(event.task, getScroller().getStackScroll(),
|
mLayoutAlgorithm.getStackTransform(event.task, getScroller().getStackScroll(),
|
||||||
mTmpTransform, null, useGridLayout());
|
mTmpTransform, null);
|
||||||
mTmpTransform.scale = finalScale;
|
mTmpTransform.scale = finalScale;
|
||||||
mTmpTransform.translationZ = mLayoutAlgorithm.mMaxTranslationZ + 1;
|
mTmpTransform.translationZ = mLayoutAlgorithm.mMaxTranslationZ + 1;
|
||||||
mTmpTransform.dimAlpha = 0f;
|
mTmpTransform.dimAlpha = 0f;
|
||||||
@@ -1857,7 +1856,7 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal
|
|||||||
Interpolators.FAST_OUT_SLOW_IN);
|
Interpolators.FAST_OUT_SLOW_IN);
|
||||||
boolean ignoreTaskOverrides = false;
|
boolean ignoreTaskOverrides = false;
|
||||||
if (event.dropTarget instanceof TaskStack.DockState) {
|
if (event.dropTarget instanceof TaskStack.DockState) {
|
||||||
mDraggingOverDockState = true;
|
mLayoutAlgorithm.getGridState().setDragging(true);
|
||||||
// Calculate the new task stack bounds that matches the window size that Recents will
|
// Calculate the new task stack bounds that matches the window size that Recents will
|
||||||
// have after the drop
|
// have after the drop
|
||||||
final TaskStack.DockState dockState = (TaskStack.DockState) event.dropTarget;
|
final TaskStack.DockState dockState = (TaskStack.DockState) event.dropTarget;
|
||||||
@@ -1877,7 +1876,7 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal
|
|||||||
updateLayoutAlgorithm(true /* boundScroll */);
|
updateLayoutAlgorithm(true /* boundScroll */);
|
||||||
ignoreTaskOverrides = true;
|
ignoreTaskOverrides = true;
|
||||||
} else {
|
} else {
|
||||||
mDraggingOverDockState = false;
|
mLayoutAlgorithm.getGridState().setDragging(false);
|
||||||
// Restore the pre-drag task stack bounds, but ensure that we don't layout the dragging
|
// Restore the pre-drag task stack bounds, but ensure that we don't layout the dragging
|
||||||
// task view, so add it back to the ignore set after updating the layout
|
// task view, so add it back to the ignore set after updating the layout
|
||||||
removeIgnoreTask(event.task);
|
removeIgnoreTask(event.task);
|
||||||
@@ -1888,7 +1887,7 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal
|
|||||||
}
|
}
|
||||||
|
|
||||||
public final void onBusEvent(final DragEndEvent event) {
|
public final void onBusEvent(final DragEndEvent event) {
|
||||||
mDraggingOverDockState = false;
|
mLayoutAlgorithm.getGridState().setDragging(false);
|
||||||
// We don't handle drops on the dock regions
|
// We don't handle drops on the dock regions
|
||||||
if (event.dropTarget instanceof TaskStack.DockState) {
|
if (event.dropTarget instanceof TaskStack.DockState) {
|
||||||
// However, we do need to reset the overrides, since the last state of this task stack
|
// However, we do need to reset the overrides, since the last state of this task stack
|
||||||
@@ -2078,6 +2077,10 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal
|
|||||||
public void reloadOnConfigurationChange() {
|
public void reloadOnConfigurationChange() {
|
||||||
mStableLayoutAlgorithm.reloadOnConfigurationChange(getContext());
|
mStableLayoutAlgorithm.reloadOnConfigurationChange(getContext());
|
||||||
mLayoutAlgorithm.reloadOnConfigurationChange(getContext());
|
mLayoutAlgorithm.reloadOnConfigurationChange(getContext());
|
||||||
|
|
||||||
|
boolean hasDockedTask = Recents.getSystemServices().hasDockedTask();
|
||||||
|
mStableLayoutAlgorithm.getGridState().setHasDockedTasks(hasDockedTask);
|
||||||
|
mLayoutAlgorithm.getGridState().setHasDockedTasks(hasDockedTask);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -2132,16 +2135,9 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Check whether we should use the grid layout.
|
* Check whether we should use the grid layout.
|
||||||
* We use the grid layout for Recents iff all the following is true:
|
|
||||||
* 1. Grid-mode is enabled.
|
|
||||||
* 2. The activity is not in split screen mode (there's no docked task).
|
|
||||||
* 3. The user is not dragging a task view over the dock state.
|
|
||||||
* @return True if we should use the grid layout.
|
|
||||||
*/
|
*/
|
||||||
public boolean useGridLayout() {
|
public boolean useGridLayout() {
|
||||||
return Recents.getConfiguration().isGridEnabled
|
return mLayoutAlgorithm.getGridState().useGridLayout();
|
||||||
&& !Recents.getSystemServices().hasDockedTask()
|
|
||||||
&& !mDraggingOverDockState;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user