Merge "Removing system bar insets from the floating menu layoutParams." into main
diff --git a/packages/SystemUI/Android.bp b/packages/SystemUI/Android.bp
index b472982..2077af8 100644
--- a/packages/SystemUI/Android.bp
+++ b/packages/SystemUI/Android.bp
@@ -135,7 +135,10 @@
aconfig_declarations {
name: "systemui_aconfig_flags",
package: "com.android.systemui.aconfig",
- srcs: ["src/com/android/systemui/aconfig/systemui.aconfig"],
+ srcs: [
+ "src/com/android/systemui/aconfig/systemui.aconfig",
+ "src/com/android/systemui/accessibility/aconfig/accessibility.aconfig",
+ ],
}
java_aconfig_library {
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/aconfig/accessibility.aconfig b/packages/SystemUI/src/com/android/systemui/accessibility/aconfig/accessibility.aconfig
new file mode 100644
index 0000000..91c5551
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/aconfig/accessibility.aconfig
@@ -0,0 +1,7 @@
+package: "com.android.systemui.aconfig"
+flag {
+ name: "floating_menu_overlaps_nav_bars_flag"
+ namespace: "accessibility"
+ description: "Adjusts bounds to allow the floating menu to render on top of navigation bars."
+ bug: "283768342"
+}
\ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuView.java b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuView.java
index 47770fa..f29077d 100644
--- a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuView.java
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuView.java
@@ -38,6 +38,7 @@
import androidx.recyclerview.widget.RecyclerViewAccessibilityDelegate;
import com.android.internal.accessibility.dialog.AccessibilityTarget;
+import com.android.systemui.aconfig.Flags;
import java.util.ArrayList;
import java.util.Collections;
@@ -284,6 +285,22 @@
void updateMenuMoveToTucked(boolean isMoveToTucked) {
mIsMoveToTucked = isMoveToTucked;
mMenuViewModel.updateMenuMoveToTucked(isMoveToTucked);
+
+ if (Flags.floatingMenuOverlapsNavBarsFlag()) {
+ if (isMoveToTucked) {
+ final float halfWidth = getMenuWidth() / 2.0f;
+ final boolean isOnLeftSide = mMenuAnimationController.isOnLeftSide();
+ final Rect clipBounds = new Rect(
+ (int) (!isOnLeftSide ? 0 : halfWidth),
+ 0,
+ (int) (!isOnLeftSide ? halfWidth : getMenuWidth()),
+ getMenuHeight()
+ );
+ setClipBounds(clipBounds);
+ } else {
+ setClipBounds(null);
+ }
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuViewAppearance.java b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuViewAppearance.java
index 3cd250f..3822936 100644
--- a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuViewAppearance.java
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuViewAppearance.java
@@ -35,6 +35,7 @@
import androidx.annotation.DimenRes;
import com.android.systemui.R;
+import com.android.systemui.aconfig.Flags;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -154,8 +155,10 @@
final int margin = getMenuMargin();
final Rect draggableBounds = new Rect(getWindowAvailableBounds());
- // Initializes start position for mapping the translation of the menu view.
- draggableBounds.offsetTo(/* newLeft= */ 0, /* newTop= */ 0);
+ if (!Flags.floatingMenuOverlapsNavBarsFlag()) {
+ // Initializes start position for mapping the translation of the menu view.
+ draggableBounds.offsetTo(/* newLeft= */ 0, /* newTop= */ 0);
+ }
draggableBounds.top += margin;
draggableBounds.right -= getMenuWidth();
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuViewLayerController.java b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuViewLayerController.java
index c52ecc5..cc18c30 100644
--- a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuViewLayerController.java
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuViewLayerController.java
@@ -24,6 +24,7 @@
import android.view.WindowManager;
import android.view.accessibility.AccessibilityManager;
+import com.android.systemui.aconfig.Flags;
import com.android.systemui.util.settings.SecureSettings;
/**
@@ -77,8 +78,15 @@
params.receiveInsetsIgnoringZOrder = true;
params.privateFlags |= PRIVATE_FLAG_EXCLUDE_FROM_SCREEN_MAGNIFICATION;
params.windowAnimations = android.R.style.Animation_Translucent;
- params.setFitInsetsTypes(
- WindowInsets.Type.systemBars() | WindowInsets.Type.displayCutout());
+ // Insets are configured to allow the menu to display over navigation and system bars.
+ if (Flags.floatingMenuOverlapsNavBarsFlag()) {
+ params.setFitInsetsTypes(0);
+ params.layoutInDisplayCutoutMode =
+ WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
+ } else {
+ params.setFitInsetsTypes(
+ WindowInsets.Type.systemBars() | WindowInsets.Type.displayCutout());
+ }
return params;
}
}