Handle visibility of AddDesktopButton for overview/quickswitch

This change introduces mDisallowScrollToAddDesk to handle the visibility
of AddDesktopButton in overview/quickswitch. In overview, set its scroll
as the first task; in quick switch, set its scroll out range of
[minScroll, maxScroll].

Bug: 398036110
Flag: com.android.window.flags.enable_multiple_desktops_frontend
Flag: com.android.window.flags.enable_multiple_desktops_backend
Test: manual quick switch
Change-Id: I5fada0c4c5bccc5572b458da9970e3524087508d
This commit is contained in:
Suhua Lei
2025-03-11 00:50:28 +00:00
parent f42f516621
commit c8fcf08dfd
3 changed files with 32 additions and 1 deletions
@@ -586,6 +586,8 @@ public abstract class RecentsView<
private final TaskOverlayFactory mTaskOverlayFactory;
protected boolean mDisallowScrollToClearAll;
// True if it is not allowed to scroll to [AddDesktopButton].
protected boolean mDisallowScrollToAddDesk;
private boolean mOverlayEnabled;
protected boolean mFreezeViewVisibility;
private boolean mOverviewGridEnabled;
@@ -6164,6 +6166,17 @@ public abstract class RecentsView<
updateMinAndMaxScrollX();
}
}
/**
* Update the value of [mDisallowScrollToAddDesk]
*/
public void setDisallowScrollToAddDesk(boolean disallowScrollToAddDesk) {
if (mDisallowScrollToAddDesk != disallowScrollToAddDesk) {
mDisallowScrollToAddDesk = disallowScrollToAddDesk;
updateMinAndMaxScrollX();
}
}
/**
* Updates page scroll synchronously after measure and layout child views.
@@ -6309,7 +6322,20 @@ public abstract class RecentsView<
if (addDesktopButtonIndex >= 0 && addDesktopButtonIndex < outPageScrolls.length) {
int firstViewIndex = getFirstViewIndex();
if (firstViewIndex >= 0 && firstViewIndex < outPageScrolls.length) {
outPageScrolls[addDesktopButtonIndex] = outPageScrolls[firstViewIndex];
// If we can scroll to [AddDesktopButton], make its page scroll equal to
// the first [TaskView]. Otherwise, make its page scroll out of range of
// [minScroll, maxScroll].
if (!mDisallowScrollToAddDesk) {
outPageScrolls[addDesktopButtonIndex] = outPageScrolls[firstViewIndex];
} else {
outPageScrolls[addDesktopButtonIndex] =
outPageScrolls[firstViewIndex] + (mIsRtl ? 1 : -1);
}
}
if (DEBUG) {
Log.d(TAG, "getPageScrolls - addDesktopButtonScroll: "
+ outPageScrolls[addDesktopButtonIndex]);
}
}
if (DEBUG) {