From 419140aede56733c75c1e4fe22f49a3e6dc0d13a Mon Sep 17 00:00:00 2001 From: Tracy Zhou Date: Tue, 30 Jan 2024 11:16:13 -0800 Subject: [PATCH] Make sure touch only goes to the nearest button when it makes sense - In NearestTouchFrame, we can't use view bounds alone since the buttons do not have the same root (3 buttons are in the main container, while the contextual buttons are in the contextual button container). This currently caused the issue that contextual button region, when the contextual buttons are invisible, triggers overview - Need to add an empty space in the left / top area of the button nav to prevent view clicks from going into back (that's how it works in navigationbar/) Bug: 25768138 Test: left and right of 3 buttons don't trigger back or overview Change-Id: Idc26c0c8ac0ecc000300a6db2e3e6251f678dada --- .../taskbar/NavbarButtonsViewController.java | 10 +++++++- .../taskbar/TaskbarNavButtonController.java | 7 ++++++ .../navbutton/AbstractNavButtonLayoutter.kt | 4 +++- .../taskbar/navbutton/KidsNavLayoutter.kt | 7 ++++-- .../navbutton/NavButtonLayoutFactory.kt | 23 +++++++++++++------ .../taskbar/navbutton/NearestTouchFrame.java | 18 +++++++++++---- .../navbutton/PhoneGestureLayoutter.kt | 7 ++++-- .../navbutton/PhoneLandscapeNavLayoutter.kt | 14 +++++++---- .../navbutton/PhonePortraitNavLayoutter.kt | 9 +++++++- .../navbutton/PhoneSeascapeNavLayoutter.kt | 11 +++++++-- .../taskbar/navbutton/SetupNavLayoutter.kt | 7 ++++-- .../taskbar/navbutton/TaskbarNavLayoutter.kt | 7 ++++-- .../navbutton/NavButtonLayoutFactoryTest.kt | 5 +++- res/values/id.xml | 1 + 14 files changed, 101 insertions(+), 29 deletions(-) diff --git a/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java b/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java index 1a1c64dd7d..9b8ab33a91 100644 --- a/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java +++ b/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java @@ -30,6 +30,7 @@ import static com.android.launcher3.taskbar.TaskbarNavButtonController.BUTTON_BA import static com.android.launcher3.taskbar.TaskbarNavButtonController.BUTTON_HOME; import static com.android.launcher3.taskbar.TaskbarNavButtonController.BUTTON_IME_SWITCH; import static com.android.launcher3.taskbar.TaskbarNavButtonController.BUTTON_RECENTS; +import static com.android.launcher3.taskbar.TaskbarNavButtonController.BUTTON_SPACE; import static com.android.launcher3.taskbar.TaskbarViewController.ALPHA_INDEX_KEYGUARD; import static com.android.launcher3.taskbar.TaskbarViewController.ALPHA_INDEX_SMALL_SCREEN; import static com.android.launcher3.util.FlagDebugUtils.appendFlag; @@ -79,6 +80,7 @@ import android.view.WindowManager; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.LinearLayout; +import android.widget.Space; import androidx.annotation.Nullable; @@ -207,6 +209,7 @@ public class NavbarButtonsViewController implements TaskbarControllers.LoggableT this::onComputeInsetsForSeparateWindow; private final RecentsHitboxExtender mHitboxExtender = new RecentsHitboxExtender(); private ImageView mRecentsButton; + private Space mSpace; public NavbarButtonsViewController(TaskbarActivityContext context, @Nullable Context navigationBarPanelContext, NearestTouchFrame navButtonsView) { @@ -432,6 +435,11 @@ public class NavbarButtonsViewController implements TaskbarControllers.LoggableT mPropertyHolders.add(new StatePropertyHolder(mA11yButton, flags -> (flags & FLAG_A11Y_VISIBLE) != 0 && (flags & FLAG_ROTATION_BUTTON_VISIBLE) == 0)); + + mSpace = new Space(mNavButtonsView.getContext()); + mSpace.setOnClickListener(view -> navButtonController.onButtonClick(BUTTON_SPACE, view)); + mSpace.setOnLongClickListener(view -> + navButtonController.onButtonLongClick(BUTTON_SPACE, view)); } private void parseSystemUiFlags(int sysUiStateFlags) { @@ -760,7 +768,7 @@ public class NavbarButtonsViewController implements TaskbarControllers.LoggableT NavButtonLayoutFactory.Companion.getUiLayoutter( dp, mNavButtonsView, mImeSwitcherButton, mControllers.rotationButtonController.getRotationButton(), - mA11yButton, res, isInKidsMode, isInSetup, isThreeButtonNav, + mA11yButton, mSpace, res, isInKidsMode, isInSetup, isThreeButtonNav, mContext.isPhoneMode(), mWindowManagerProxy.getRotation(mContext)); navButtonLayoutter.layoutButtons(mContext, isA11yButtonPersistent()); updateButtonsBackground(); diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarNavButtonController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarNavButtonController.java index 3f72e5d9d3..19293b59ee 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarNavButtonController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarNavButtonController.java @@ -102,6 +102,7 @@ public class TaskbarNavButtonController implements TaskbarControllers.LoggableTa static final int BUTTON_A11Y = BUTTON_IME_SWITCH << 1; static final int BUTTON_QUICK_SETTINGS = BUTTON_A11Y << 1; static final int BUTTON_NOTIFICATIONS = BUTTON_QUICK_SETTINGS << 1; + static final int BUTTON_SPACE = BUTTON_NOTIFICATIONS << 1; private static final int SCREEN_UNPIN_COMBO = BUTTON_BACK | BUTTON_RECENTS; private int mLongPressedButtons = 0; @@ -123,6 +124,9 @@ public class TaskbarNavButtonController implements TaskbarControllers.LoggableTa } public void onButtonClick(@TaskbarButton int buttonType, View view) { + if (buttonType == BUTTON_SPACE) { + return; + } // Provide the same haptic feedback that the system offers for virtual keys. view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY); switch (buttonType) { @@ -156,6 +160,9 @@ public class TaskbarNavButtonController implements TaskbarControllers.LoggableTa } public boolean onButtonLongClick(@TaskbarButton int buttonType, View view) { + if (buttonType == BUTTON_SPACE) { + return false; + } // Provide the same haptic feedback that the system offers for virtual keys. view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY); switch (buttonType) { diff --git a/quickstep/src/com/android/launcher3/taskbar/navbutton/AbstractNavButtonLayoutter.kt b/quickstep/src/com/android/launcher3/taskbar/navbutton/AbstractNavButtonLayoutter.kt index 23e3310e70..ac47c60283 100644 --- a/quickstep/src/com/android/launcher3/taskbar/navbutton/AbstractNavButtonLayoutter.kt +++ b/quickstep/src/com/android/launcher3/taskbar/navbutton/AbstractNavButtonLayoutter.kt @@ -23,6 +23,7 @@ import android.view.ViewGroup import android.widget.FrameLayout import android.widget.ImageView import android.widget.LinearLayout +import android.widget.Space import com.android.launcher3.R import com.android.launcher3.Utilities import com.android.launcher3.taskbar.navbutton.NavButtonLayoutFactory.NavButtonLayoutter @@ -46,7 +47,8 @@ abstract class AbstractNavButtonLayoutter( protected val startContextualContainer: ViewGroup, protected val imeSwitcher: ImageView?, protected val rotationButton: RotationButton?, - protected val a11yButton: ImageView? + protected val a11yButton: ImageView?, + protected val space: Space ) : NavButtonLayoutter { protected val homeButton: ImageView? = navButtonContainer.findViewById(R.id.home) protected val recentsButton: ImageView? = navButtonContainer.findViewById(R.id.recent_apps) diff --git a/quickstep/src/com/android/launcher3/taskbar/navbutton/KidsNavLayoutter.kt b/quickstep/src/com/android/launcher3/taskbar/navbutton/KidsNavLayoutter.kt index f31af09ab7..26344b8c37 100644 --- a/quickstep/src/com/android/launcher3/taskbar/navbutton/KidsNavLayoutter.kt +++ b/quickstep/src/com/android/launcher3/taskbar/navbutton/KidsNavLayoutter.kt @@ -25,6 +25,7 @@ import android.view.ViewGroup.LayoutParams.WRAP_CONTENT import android.widget.FrameLayout import android.widget.ImageView import android.widget.LinearLayout +import android.widget.Space import com.android.launcher3.R import com.android.launcher3.taskbar.TaskbarActivityContext import com.android.launcher3.taskbar.navbutton.LayoutResourceHelper.* @@ -37,7 +38,8 @@ class KidsNavLayoutter( startContextualContainer: ViewGroup, imeSwitcher: ImageView?, rotationButton: RotationButton?, - a11yButton: ImageView? + a11yButton: ImageView?, + space: Space, ) : AbstractNavButtonLayoutter( resources, @@ -46,7 +48,8 @@ class KidsNavLayoutter( startContextualContainer, imeSwitcher, rotationButton, - a11yButton + a11yButton, + space ) { override fun layoutButtons(context: TaskbarActivityContext, isA11yButtonPersistent: Boolean) { diff --git a/quickstep/src/com/android/launcher3/taskbar/navbutton/NavButtonLayoutFactory.kt b/quickstep/src/com/android/launcher3/taskbar/navbutton/NavButtonLayoutFactory.kt index 672bc0d597..1d4ae7b15a 100644 --- a/quickstep/src/com/android/launcher3/taskbar/navbutton/NavButtonLayoutFactory.kt +++ b/quickstep/src/com/android/launcher3/taskbar/navbutton/NavButtonLayoutFactory.kt @@ -23,6 +23,7 @@ import android.view.ViewGroup import android.widget.FrameLayout import android.widget.ImageView import android.widget.LinearLayout +import android.widget.Space import com.android.launcher3.DeviceProfile import com.android.launcher3.taskbar.TaskbarActivityContext import com.android.launcher3.taskbar.navbutton.LayoutResourceHelper.* @@ -60,6 +61,7 @@ class NavButtonLayoutFactory { imeSwitcher: ImageView?, rotationButton: RotationButton?, a11yButton: ImageView?, + space: Space, resources: Resources, isKidsMode: Boolean, isInSetup: Boolean, @@ -86,7 +88,8 @@ class NavButtonLayoutFactory { startContextualContainer, imeSwitcher, rotationButton, - a11yButton + a11yButton, + space ) } else if (surfaceRotation == ROTATION_90) { navButtonsView.setIsVertical(true) @@ -97,7 +100,8 @@ class NavButtonLayoutFactory { startContextualContainer, imeSwitcher, rotationButton, - a11yButton + a11yButton, + space ) } else { navButtonsView.setIsVertical(true) @@ -108,7 +112,8 @@ class NavButtonLayoutFactory { startContextualContainer, imeSwitcher, rotationButton, - a11yButton + a11yButton, + space ) } } @@ -120,7 +125,8 @@ class NavButtonLayoutFactory { startContextualContainer, imeSwitcher, rotationButton, - a11yButton + a11yButton, + space ) } deviceProfile.isTaskbarPresent -> { @@ -133,7 +139,8 @@ class NavButtonLayoutFactory { startContextualContainer, imeSwitcher, rotationButton, - a11yButton + a11yButton, + space ) } isKidsMode -> { @@ -144,7 +151,8 @@ class NavButtonLayoutFactory { startContextualContainer, imeSwitcher, rotationButton, - a11yButton + a11yButton, + space ) } else -> @@ -155,7 +163,8 @@ class NavButtonLayoutFactory { startContextualContainer, imeSwitcher, rotationButton, - a11yButton + a11yButton, + space ) } } diff --git a/quickstep/src/com/android/launcher3/taskbar/navbutton/NearestTouchFrame.java b/quickstep/src/com/android/launcher3/taskbar/navbutton/NearestTouchFrame.java index a477303c25..bbf08bf903 100644 --- a/quickstep/src/com/android/launcher3/taskbar/navbutton/NearestTouchFrame.java +++ b/quickstep/src/com/android/launcher3/taskbar/navbutton/NearestTouchFrame.java @@ -27,6 +27,7 @@ import android.widget.FrameLayout; import java.io.PrintWriter; import java.util.ArrayList; +import java.util.Arrays; import java.util.Comparator; import java.util.HashMap; import java.util.List; @@ -42,7 +43,10 @@ public class NearestTouchFrame extends FrameLayout { private final List mClickableChildren = new ArrayList<>(); private final List mAttachedChildren = new ArrayList<>(); private final boolean mIsActive; + private final int[] mTmpInt = new int[2]; + // Offset (as the base) to translate window cords to view cords. + private final int[] mWindowOffset = new int[2]; private boolean mIsVertical; private View mTouchingChild; private final Map mTouchableRegions = new HashMap<>(); @@ -52,8 +56,11 @@ public class NearestTouchFrame extends FrameLayout { */ private final Comparator mChildRegionComparator = (view1, view2) -> { - int startingCoordView1 = mIsVertical ? view1.getTop() : view1.getLeft(); - int startingCoordView2 = mIsVertical ? view2.getTop() : view2.getLeft(); + int leftTopIndex = mIsVertical ? 1 : 0; + view1.getLocationInWindow(mTmpInt); + int startingCoordView1 = mTmpInt[leftTopIndex] - mWindowOffset[leftTopIndex]; + view2.getLocationInWindow(mTmpInt); + int startingCoordView2 = mTmpInt[leftTopIndex] - mWindowOffset[leftTopIndex]; return startingCoordView1 - startingCoordView2; }; @@ -74,6 +81,7 @@ public class NearestTouchFrame extends FrameLayout { mAttachedChildren.clear(); mTouchableRegions.clear(); addClickableChildren(this); + getLocationInWindow(mWindowOffset); cacheClosestChildLocations(); } @@ -147,8 +155,9 @@ public class NearestTouchFrame extends FrameLayout { } private Rect getChildsBounds(View child) { - int left = child.getLeft(); - int top = child.getTop(); + child.getLocationInWindow(mTmpInt); + int left = mTmpInt[0] - mWindowOffset[0]; + int top = mTmpInt[1] - mWindowOffset[1]; int right = left + child.getWidth(); int bottom = top + child.getHeight(); return new Rect(left, top, right, bottom); @@ -194,6 +203,7 @@ public class NearestTouchFrame extends FrameLayout { public void dumpLogs(String prefix, PrintWriter pw) { pw.println(prefix + "NearestTouchFrame:"); + pw.println(String.format("%s\tmWindowOffset=%s", prefix, Arrays.toString(mWindowOffset))); pw.println(String.format("%s\tmIsVertical=%s", prefix, mIsVertical)); pw.println(String.format("%s\tmTouchingChild=%s", prefix, mTouchingChild)); pw.println(String.format("%s\tmTouchableRegions=%s", prefix, diff --git a/quickstep/src/com/android/launcher3/taskbar/navbutton/PhoneGestureLayoutter.kt b/quickstep/src/com/android/launcher3/taskbar/navbutton/PhoneGestureLayoutter.kt index 3817f91ec1..6d86f1b63b 100644 --- a/quickstep/src/com/android/launcher3/taskbar/navbutton/PhoneGestureLayoutter.kt +++ b/quickstep/src/com/android/launcher3/taskbar/navbutton/PhoneGestureLayoutter.kt @@ -20,6 +20,7 @@ import android.content.res.Resources import android.view.ViewGroup import android.widget.ImageView import android.widget.LinearLayout +import android.widget.Space import com.android.launcher3.taskbar.TaskbarActivityContext import com.android.systemui.shared.rotation.RotationButton @@ -31,7 +32,8 @@ class PhoneGestureLayoutter( startContextualContainer: ViewGroup, imeSwitcher: ImageView?, rotationButton: RotationButton?, - a11yButton: ImageView? + a11yButton: ImageView?, + space: Space, ) : AbstractNavButtonLayoutter( resources, @@ -40,7 +42,8 @@ class PhoneGestureLayoutter( startContextualContainer, imeSwitcher, rotationButton, - a11yButton + a11yButton, + space ) { override fun layoutButtons(context: TaskbarActivityContext, isA11yButtonPersistent: Boolean) { diff --git a/quickstep/src/com/android/launcher3/taskbar/navbutton/PhoneLandscapeNavLayoutter.kt b/quickstep/src/com/android/launcher3/taskbar/navbutton/PhoneLandscapeNavLayoutter.kt index b1b50d6d7f..9314f81ac4 100644 --- a/quickstep/src/com/android/launcher3/taskbar/navbutton/PhoneLandscapeNavLayoutter.kt +++ b/quickstep/src/com/android/launcher3/taskbar/navbutton/PhoneLandscapeNavLayoutter.kt @@ -19,9 +19,11 @@ package com.android.launcher3.taskbar.navbutton import android.content.res.Resources import android.view.Gravity import android.view.ViewGroup +import android.view.ViewGroup.LayoutParams.MATCH_PARENT import android.widget.FrameLayout import android.widget.ImageView import android.widget.LinearLayout +import android.widget.Space import com.android.launcher3.R import com.android.launcher3.taskbar.TaskbarActivityContext import com.android.systemui.shared.rotation.RotationButton @@ -34,6 +36,7 @@ open class PhoneLandscapeNavLayoutter( imeSwitcher: ImageView?, rotationButton: RotationButton?, a11yButton: ImageView?, + space: Space, ) : AbstractNavButtonLayoutter( resources, @@ -42,7 +45,8 @@ open class PhoneLandscapeNavLayoutter( startContextualContainer, imeSwitcher, rotationButton, - a11yButton + a11yButton, + space ) { override fun layoutButtons(context: TaskbarActivityContext, isA11yButtonPersistent: Boolean) { @@ -60,7 +64,7 @@ open class PhoneLandscapeNavLayoutter( val navButtonContainerHeight = contentWidth - contextualButtonHeight * 2 val navContainerParams = FrameLayout.LayoutParams( - ViewGroup.LayoutParams.MATCH_PARENT, navButtonContainerHeight.toInt()) + MATCH_PARENT, navButtonContainerHeight.toInt()) navContainerParams.apply { topMargin = (contextualButtonHeight + contentPadding + roundedCornerContentMargin).toInt() @@ -125,6 +129,8 @@ open class PhoneLandscapeNavLayoutter( val contentPadding = resources.getDimensionPixelSize(R.dimen.taskbar_phone_content_padding) repositionContextualContainer(startContextualContainer, buttonSize, roundedCornerContentMargin + contentPadding, 0, Gravity.TOP) + repositionContextualContainer(endContextualContainer, buttonSize, + 0, roundedCornerContentMargin + contentPadding, Gravity.BOTTOM) if (imeSwitcher != null) { startContextualContainer.addView(imeSwitcher) @@ -137,13 +143,13 @@ open class PhoneLandscapeNavLayoutter( startContextualContainer.addView(rotationButton.currentView) rotationButton.currentView.layoutParams = getParamsToCenterView() } + endContextualContainer.addView(space, MATCH_PARENT, MATCH_PARENT) } override fun repositionContextualContainer(contextualContainer: ViewGroup, buttonSize: Int, barAxisMarginTop: Int, barAxisMarginBottom: Int, gravity: Int) { - val contextualContainerParams = FrameLayout.LayoutParams( - ViewGroup.LayoutParams.MATCH_PARENT, buttonSize) + val contextualContainerParams = FrameLayout.LayoutParams(MATCH_PARENT, buttonSize) contextualContainerParams.apply { marginStart = 0 marginEnd = 0 diff --git a/quickstep/src/com/android/launcher3/taskbar/navbutton/PhonePortraitNavLayoutter.kt b/quickstep/src/com/android/launcher3/taskbar/navbutton/PhonePortraitNavLayoutter.kt index 05183b8411..13e085a887 100644 --- a/quickstep/src/com/android/launcher3/taskbar/navbutton/PhonePortraitNavLayoutter.kt +++ b/quickstep/src/com/android/launcher3/taskbar/navbutton/PhonePortraitNavLayoutter.kt @@ -19,9 +19,11 @@ package com.android.launcher3.taskbar.navbutton import android.content.res.Resources import android.view.Gravity import android.view.ViewGroup +import android.view.ViewGroup.LayoutParams.MATCH_PARENT import android.widget.FrameLayout import android.widget.ImageView import android.widget.LinearLayout +import android.widget.Space import com.android.launcher3.R import com.android.launcher3.taskbar.TaskbarActivityContext import com.android.systemui.shared.rotation.RotationButton @@ -34,6 +36,7 @@ class PhonePortraitNavLayoutter( imeSwitcher: ImageView?, rotationButton: RotationButton?, a11yButton: ImageView?, + space: Space ) : AbstractNavButtonLayoutter( resources, @@ -42,7 +45,8 @@ class PhonePortraitNavLayoutter( startContextualContainer, imeSwitcher, rotationButton, - a11yButton + a11yButton, + space ) { override fun layoutButtons(context: TaskbarActivityContext, isA11yButtonPersistent: Boolean) { @@ -110,9 +114,12 @@ class PhonePortraitNavLayoutter( endContextualContainer.removeAllViews() startContextualContainer.removeAllViews() + repositionContextualContainer(startContextualContainer, contextualButtonWidth.toInt(), + roundedCornerContentMargin + contentPadding, 0, Gravity.START) repositionContextualContainer(endContextualContainer, contextualButtonWidth.toInt(), 0, roundedCornerContentMargin + contentPadding, Gravity.END) + startContextualContainer.addView(space, MATCH_PARENT, MATCH_PARENT) if (imeSwitcher != null) { endContextualContainer.addView(imeSwitcher) imeSwitcher.layoutParams = getParamsToCenterView() diff --git a/quickstep/src/com/android/launcher3/taskbar/navbutton/PhoneSeascapeNavLayoutter.kt b/quickstep/src/com/android/launcher3/taskbar/navbutton/PhoneSeascapeNavLayoutter.kt index 0f52552c8b..a21f5ce4b3 100644 --- a/quickstep/src/com/android/launcher3/taskbar/navbutton/PhoneSeascapeNavLayoutter.kt +++ b/quickstep/src/com/android/launcher3/taskbar/navbutton/PhoneSeascapeNavLayoutter.kt @@ -19,8 +19,10 @@ package com.android.launcher3.taskbar.navbutton import android.content.res.Resources import android.view.Gravity import android.view.ViewGroup +import android.view.ViewGroup.LayoutParams.MATCH_PARENT import android.widget.ImageView import android.widget.LinearLayout +import android.widget.Space import com.android.launcher3.R import com.android.systemui.shared.rotation.RotationButton @@ -31,7 +33,8 @@ class PhoneSeascapeNavLayoutter( startContextualContainer: ViewGroup, imeSwitcher: ImageView?, rotationButton: RotationButton?, - a11yButton: ImageView? + a11yButton: ImageView?, + space: Space, ) : PhoneLandscapeNavLayoutter( resources, @@ -40,7 +43,8 @@ class PhoneSeascapeNavLayoutter( startContextualContainer, imeSwitcher, rotationButton, - a11yButton + a11yButton, + space ) { override fun addThreeButtons() { @@ -57,9 +61,12 @@ class PhoneSeascapeNavLayoutter( val roundedCornerContentMargin = resources.getDimensionPixelSize( R.dimen.taskbar_phone_rounded_corner_content_margin) val contentPadding = resources.getDimensionPixelSize(R.dimen.taskbar_phone_content_padding) + repositionContextualContainer(startContextualContainer, buttonSize, + roundedCornerContentMargin + contentPadding, 0, Gravity.TOP) repositionContextualContainer(endContextualContainer, buttonSize, 0, roundedCornerContentMargin + contentPadding, Gravity.BOTTOM) + startContextualContainer.addView(space, MATCH_PARENT, MATCH_PARENT) if (imeSwitcher != null) { endContextualContainer.addView(imeSwitcher) imeSwitcher.layoutParams = getParamsToCenterView() diff --git a/quickstep/src/com/android/launcher3/taskbar/navbutton/SetupNavLayoutter.kt b/quickstep/src/com/android/launcher3/taskbar/navbutton/SetupNavLayoutter.kt index 5111bba53d..6eb7b93dc4 100644 --- a/quickstep/src/com/android/launcher3/taskbar/navbutton/SetupNavLayoutter.kt +++ b/quickstep/src/com/android/launcher3/taskbar/navbutton/SetupNavLayoutter.kt @@ -23,6 +23,7 @@ import android.view.ViewGroup.LayoutParams.WRAP_CONTENT import android.widget.FrameLayout import android.widget.ImageView import android.widget.LinearLayout +import android.widget.Space import com.android.launcher3.R import com.android.launcher3.taskbar.TaskbarActivityContext import com.android.systemui.shared.rotation.RotationButton @@ -34,7 +35,8 @@ class SetupNavLayoutter( startContextualContainer: ViewGroup, imeSwitcher: ImageView?, rotationButton: RotationButton?, - a11yButton: ImageView? + a11yButton: ImageView?, + space: Space, ) : AbstractNavButtonLayoutter( resources, @@ -43,7 +45,8 @@ class SetupNavLayoutter( startContextualContainer, imeSwitcher, rotationButton, - a11yButton + a11yButton, + space ) { override fun layoutButtons(context: TaskbarActivityContext, isA11yButtonPersistent: Boolean) { diff --git a/quickstep/src/com/android/launcher3/taskbar/navbutton/TaskbarNavLayoutter.kt b/quickstep/src/com/android/launcher3/taskbar/navbutton/TaskbarNavLayoutter.kt index 45dbebbbdb..89c67b9947 100644 --- a/quickstep/src/com/android/launcher3/taskbar/navbutton/TaskbarNavLayoutter.kt +++ b/quickstep/src/com/android/launcher3/taskbar/navbutton/TaskbarNavLayoutter.kt @@ -23,6 +23,7 @@ import android.view.ViewGroup.LayoutParams.WRAP_CONTENT import android.widget.FrameLayout import android.widget.ImageView import android.widget.LinearLayout +import android.widget.Space import com.android.launcher3.R import com.android.launcher3.taskbar.TaskbarActivityContext import com.android.systemui.shared.rotation.RotationButton @@ -37,7 +38,8 @@ class TaskbarNavLayoutter( startContextualContainer: ViewGroup, imeSwitcher: ImageView?, rotationButton: RotationButton?, - a11yButton: ImageView? + a11yButton: ImageView?, + space: Space ) : AbstractNavButtonLayoutter( resources, @@ -46,7 +48,8 @@ class TaskbarNavLayoutter( startContextualContainer, imeSwitcher, rotationButton, - a11yButton + a11yButton, + space ) { override fun layoutButtons(context: TaskbarActivityContext, isA11yButtonPersistent: Boolean) { diff --git a/quickstep/tests/src/com/android/launcher3/taskbar/navbutton/NavButtonLayoutFactoryTest.kt b/quickstep/tests/src/com/android/launcher3/taskbar/navbutton/NavButtonLayoutFactoryTest.kt index 9c7fdc6707..87cbdd1b94 100644 --- a/quickstep/tests/src/com/android/launcher3/taskbar/navbutton/NavButtonLayoutFactoryTest.kt +++ b/quickstep/tests/src/com/android/launcher3/taskbar/navbutton/NavButtonLayoutFactoryTest.kt @@ -9,6 +9,7 @@ import android.view.ViewGroup import android.widget.FrameLayout import android.widget.ImageView import android.widget.LinearLayout +import android.widget.Space import androidx.test.runner.AndroidJUnit4 import com.android.launcher3.DeviceProfile import com.android.launcher3.R @@ -38,6 +39,7 @@ class NavButtonLayoutFactoryTest { private val mockImeSwitcher: ImageView = mock() private val mockRotationButton: RotationButton = mock() private val mockA11yButton: ImageView = mock() + private val mockSpace: Space = mock() private var surfaceRotation = Surface.ROTATION_0 @@ -201,7 +203,8 @@ class NavButtonLayoutFactoryTest { surfaceRotation = surfaceRotation, imeSwitcher = mockImeSwitcher, rotationButton = mockRotationButton, - a11yButton = mockA11yButton + a11yButton = mockA11yButton, + space = mockSpace, ) } } diff --git a/res/values/id.xml b/res/values/id.xml index 6156c91888..198496f741 100644 --- a/res/values/id.xml +++ b/res/values/id.xml @@ -32,6 +32,7 @@ +