Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 89cf9b07 authored by Riley Jones's avatar Riley Jones Committed by Android (Google) Code Review
Browse files

Merge "Removing system bar insets from the floating menu layoutParams." into main

parents d2cd2b64 32c5a68a
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -135,7 +135,10 @@ android_library {
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 {
+7 −0
Original line number Diff line number Diff line
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
+17 −0
Original line number Diff line number Diff line
@@ -38,6 +38,7 @@ import androidx.recyclerview.widget.RecyclerView;
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 @@ class MenuView extends FrameLayout implements
    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);
            }
        }
    }


+5 −2
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@ import android.view.WindowMetrics;
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 @@ class MenuViewAppearance {
        final int margin = getMenuMargin();
        final Rect draggableBounds = new Rect(getWindowAvailableBounds());

        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();
+10 −2
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.view.WindowInsets;
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 @@ class MenuViewLayerController implements IAccessibilityFloatingMenu {
        params.receiveInsetsIgnoringZOrder = true;
        params.privateFlags |= PRIVATE_FLAG_EXCLUDE_FROM_SCREEN_MAGNIFICATION;
        params.windowAnimations = android.R.style.Animation_Translucent;
        // 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;
    }
}