diff --git a/quickstep/src/com/android/quickstep/views/AddDesktopButton.kt b/quickstep/src/com/android/quickstep/views/AddDesktopButton.kt index 1dab18a251..e353160c0c 100644 --- a/quickstep/src/com/android/quickstep/views/AddDesktopButton.kt +++ b/quickstep/src/com/android/quickstep/views/AddDesktopButton.kt @@ -21,7 +21,9 @@ import android.graphics.drawable.ShapeDrawable import android.graphics.drawable.shapes.RoundRectShape import android.util.AttributeSet import android.widget.ImageButton +import com.android.launcher3.LauncherAnimUtils.VIEW_TRANSLATE_X import com.android.launcher3.R +import com.android.launcher3.util.MultiPropertyFactory /** * Button for supporting multiple desktop sessions. The button will be next to the first TaskView @@ -30,6 +32,29 @@ import com.android.launcher3.R class AddDesktopButton @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) : ImageButton(context, attrs) { + private enum class TranslationX { + GRID, + OFFSET, + } + + private val multiTranslationX = + MultiPropertyFactory(this, VIEW_TRANSLATE_X, TranslationX.entries.size) { a: Float, b: Float + -> + a + b + } + + var gridTranslationX + get() = multiTranslationX[TranslationX.GRID.ordinal].value + set(value) { + multiTranslationX[TranslationX.GRID.ordinal].value = value + } + + var offsetTranslationX + get() = multiTranslationX[TranslationX.OFFSET.ordinal].value + set(value) { + multiTranslationX[TranslationX.OFFSET.ordinal].value = value + } + override fun onFinishInflate() { super.onFinishInflate() diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java index c0b026bd66..b93a2f0c62 100644 --- a/quickstep/src/com/android/quickstep/views/RecentsView.java +++ b/quickstep/src/com/android/quickstep/views/RecentsView.java @@ -3467,7 +3467,7 @@ public abstract class RecentsView< // `mAddDesktopButton`, shift `mAddDesktopButton` to accommodate. translationX += largeTaskWidthAndSpacing; } - mAddDesktopButton.setTranslationX(translationX); + mAddDesktopButton.setGridTranslationX(translationX); } final TaskView runningTask = getRunningTaskView(); @@ -4973,8 +4973,8 @@ public abstract class RecentsView< } else if (child instanceof ClearAllButton) { getPagedOrientationHandler().getPrimaryViewTranslate().set(child, totalTranslationX); - } else { - // TODO(b/389209581): Handle the page offsets update of the 'mAddDesktopButton'. + } else if (child instanceof AddDesktopButton addDesktopButton) { + addDesktopButton.setOffsetTranslationX(totalTranslationX); } if (mEnableDrawingLiveTile && i == getRunningTaskIndex()) { runActionOnRemoteHandles( @@ -6157,7 +6157,7 @@ public abstract class RecentsView< if (addDesktopButtonIndex != -1 && addDesktopButtonIndex < outPageScrolls.length) { outPageScrolls[addDesktopButtonIndex] = newPageScrolls[addDesktopButtonIndex] + Math.round( - mAddDesktopButton.getTranslationX()); + mAddDesktopButton.getGridTranslationX()); } int lastTaskScroll = getLastTaskScroll(clearAllScroll, clearAllWidth);