diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarView.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarView.java index b609511160..7856c43a9c 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarView.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarView.java @@ -501,16 +501,20 @@ public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconPar } private void updateAllAppsDivider() { - final int allAppsDividerIndex = - mIsRtl ? getChildCount() - mNumStaticViews : mNumStaticViews; - if (getChildAt(allAppsDividerIndex) == mTaskbarDividerContainer + // Index where All Apps divider would be if it is already in Taskbar. + final int expectedAllAppsDividerIndex = + mIsRtl ? getChildCount() - mNumStaticViews - 1 : mNumStaticViews; + if (getChildAt(expectedAllAppsDividerIndex) == mTaskbarDividerContainer && getChildCount() == mNumStaticViews + 1) { // Only static views with divider so remove divider. removeView(mTaskbarDividerContainer); - } else if (getChildAt(allAppsDividerIndex) != mTaskbarDividerContainer + } else if (getChildAt(expectedAllAppsDividerIndex) != mTaskbarDividerContainer && getChildCount() >= mNumStaticViews + 1) { - // Static views with at least one app icon so add divider. - addView(mTaskbarDividerContainer, allAppsDividerIndex); + // Static views with at least one app icon so add divider. For RTL, add it after the + // icon that is at the expected index. + addView( + mTaskbarDividerContainer, + mIsRtl ? expectedAllAppsDividerIndex + 1 : expectedAllAppsDividerIndex); } } diff --git a/quickstep/tests/multivalentTests/src/com/android/launcher3/taskbar/TaskbarViewWithLayoutTransitionTest.kt b/quickstep/tests/multivalentTests/src/com/android/launcher3/taskbar/TaskbarViewWithLayoutTransitionTest.kt index 15ded8d5ea..78d8e5d70e 100644 --- a/quickstep/tests/multivalentTests/src/com/android/launcher3/taskbar/TaskbarViewWithLayoutTransitionTest.kt +++ b/quickstep/tests/multivalentTests/src/com/android/launcher3/taskbar/TaskbarViewWithLayoutTransitionTest.kt @@ -84,7 +84,17 @@ class TaskbarViewWithLayoutTransitionTest { @Test @ForceRtl - fun testUpdateItems_rtl_addHotseatItem_updatesHotseat() { + fun testUpdateItems_rtl_addHotseatItemWithoutRecents_updatesHotseat() { + runOnMainSync { + taskbarView.updateItems(createHotseatItems(1), emptyList()) + taskbarView.updateItems(createHotseatItems(2), emptyList()) + } + assertThat(taskbarView).hasIconTypes(*HOTSEAT * 2, DIVIDER, ALL_APPS) + } + + @Test + @ForceRtl + fun testUpdateItems_rtl_addHotseatItemWithRecents_updatesHotseat() { runOnMainSync { taskbarView.updateItems(createHotseatItems(1), createRecents(1)) taskbarView.updateItems(createHotseatItems(2), createRecents(1))