Hide overview and app icon split option when appropriate

Don't show app menu icon split option or overview
action split option when current taskView is already in
split or there are not at least 2 tasks with which to
invoke split

Fixes: 197245395
Test: Tested with small and large screen,
dismissing tasks in overview, with and without
GroupedTaskView as main running task

Change-Id: I90cc3c39e4d94662cb87314a210d45d145b6e026
This commit is contained in:
Vinit Nayak 2021-08-31 20:23:36 -07:00
parent 667bda8448
commit 0b73d1014f
3 changed files with 23 additions and 4 deletions

View File

@ -107,6 +107,13 @@ public class TaskOverlayFactory implements ResourceBasedOverride {
public static void addSplitOptions(List<SystemShortcut> outShortcuts,
BaseDraggingActivity activity, TaskView taskView, DeviceProfile deviceProfile) {
int[] taskViewTaskIds = taskView.getTaskIds();
boolean alreadyHasMultipleTasks = taskViewTaskIds[0] != -1 &&
taskViewTaskIds[1] != -1;
if (alreadyHasMultipleTasks) {
return;
}
PagedOrientationHandler orientationHandler =
taskView.getRecentsView().getPagedOrientationHandler();
List<SplitPositionOption> positions =

View File

@ -223,7 +223,6 @@ public class OverviewActionsView<T extends OverlayUICallbacks> extends FrameLayo
mDp = dp;
updateVerticalMargin(SysUINavigationMode.getMode(getContext()));
requestLayout();
setSplitButtonVisible(mDp.isTablet);
}
public void setSplitButtonVisible(boolean visible) {

View File

@ -1500,7 +1500,7 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
mActionsView.setDp(dp);
mOrientationState.setDeviceProfile(dp);
// Update RecentsView adn TaskView's DeviceProfile dependent layout.
// Update RecentsView and TaskView's DeviceProfile dependent layout.
updateOrientationHandler();
}
@ -2593,7 +2593,6 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
mFirstFloatingTaskView.setAlpha(1);
mFirstFloatingTaskView.addAnimation(anim, startingTaskRect,
mTempRect, mSplitHiddenTaskView, true /*fadeWithThumbnail*/);
anim.addEndListener(aBoolean -> mActionsView.setSplitButtonVisible(false));
}
/**
@ -2933,6 +2932,7 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
dispatchScrollChanged();
}
}
updateFocusedSplitButtonVisibility();
onDismissAnimationEnds();
mPendingAnimation = null;
}
@ -2940,6 +2940,19 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
return anim;
}
/**
* Shows split button if
* * We're in large screen
* * We're not already in split
* * There are at least 2 tasks to invoke split
*/
private void updateFocusedSplitButtonVisibility() {
mActionsView.setSplitButtonVisible(mActivity.getDeviceProfile().isTablet &&
!(getRunningTaskView() instanceof GroupedTaskView) &&
getTaskViewCount() > 1
);
}
/**
* Returns all the tasks in the top row, without the focused task
*/
@ -3745,7 +3758,6 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
mSecondSplitHiddenTaskView.setVisibility(VISIBLE);
mSecondSplitHiddenTaskView = null;
}
mActionsView.setSplitButtonVisible(true);
}
private void updateDeadZoneRects() {
@ -3960,6 +3972,7 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
@Override
protected void notifyPageSwitchListener(int prevPage) {
super.notifyPageSwitchListener(prevPage);
updateFocusedSplitButtonVisibility();
loadVisibleTaskData(TaskView.FLAG_UPDATE_ALL);
updateEnabledOverlays();
}