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

Commit fc9c8364 authored by Bartosz Chominski's avatar Bartosz Chominski
Browse files

Polish maximize menu

Use |Point| instead of |PointF| for maximize menu's position on the
screen.
Change Immersive button's width following ag/31915151.
Make Immersive button horizontally centered.
Merge |marginStart| and |marginEnd| into |marginHorizontal|.

Fix: 401210893
Flag: com.android.window.flags.enable_desktop_windowing_mode
Change-Id: Idc820c18793abbd8e2140a97891c2bf81ea1c9d0
parent 732243fc
Loading
Loading
Loading
Loading
+5 −7
Original line number Diff line number Diff line
@@ -38,11 +38,11 @@
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:orientation="vertical"
            android:layout_marginStart="4dp"
            android:layout_marginEnd="4dp">
            android:gravity="center_horizontal"
            android:layout_marginHorizontal="4dp">

            <Button
                android:layout_width="94dp"
                android:layout_width="108dp"
                android:layout_height="60dp"
                android:id="@+id/maximize_menu_immersive_toggle_button"
                style="?android:attr/buttonBarButtonStyle"
@@ -75,8 +75,7 @@
            android:layout_weight="1"
            android:orientation="vertical"
            android:gravity="center_horizontal"
            android:layout_marginStart="4dp"
            android:layout_marginEnd="4dp">
            android:layout_marginHorizontal="4dp">

            <Button
                android:layout_width="108dp"
@@ -112,8 +111,7 @@
            android:layout_weight="1"
            android:orientation="vertical"
            android:gravity="center_horizontal"
            android:layout_marginStart="4dp"
            android:layout_marginEnd="4dp">
            android:layout_marginHorizontal="4dp">
            <LinearLayout
                android:id="@+id/maximize_menu_snap_menu_layout"
                android:layout_width="wrap_content"
+8 −8
Original line number Diff line number Diff line
@@ -1095,8 +1095,8 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin
        return Resources.ID_NULL;
    }

    private PointF calculateMaximizeMenuPosition(int menuWidth, int menuHeight) {
        final PointF position = new PointF();
    private Point calculateMaximizeMenuPosition(int menuWidth, int menuHeight) {
        final Point position = new Point();
        final Resources resources = mContext.getResources();
        final DisplayLayout displayLayout =
                mDisplayController.getDisplayLayout(mTaskInfo.displayId);
@@ -1111,11 +1111,11 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin
        final int[] maximizeButtonLocation = new int[2];
        maximizeWindowButton.getLocationInWindow(maximizeButtonLocation);

        float menuLeft = (mPositionInParent.x + maximizeButtonLocation[0] - ((float) (menuWidth
                - maximizeWindowButton.getWidth()) / 2));
        float menuTop = (mPositionInParent.y + captionHeight);
        final float menuRight = menuLeft + menuWidth;
        final float menuBottom = menuTop + menuHeight;
        int menuLeft = (mPositionInParent.x + maximizeButtonLocation[0] - (menuWidth
                - maximizeWindowButton.getWidth()) / 2);
        int menuTop = (mPositionInParent.y + captionHeight);
        final int menuRight = menuLeft + menuWidth;
        final int menuBottom = menuTop + menuHeight;

        // If the menu is out of screen bounds, shift it as needed
        if (menuLeft < 0) {
@@ -1127,7 +1127,7 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin
            menuTop = (displayHeight - menuHeight);
        }

        return new PointF(menuLeft, menuTop);
        return new Point(menuLeft, menuTop);
    }

    boolean isHandleMenuActive() {
+9 −9
Original line number Diff line number Diff line
@@ -26,7 +26,7 @@ import android.content.res.ColorStateList
import android.content.res.Resources
import android.graphics.Paint
import android.graphics.PixelFormat
import android.graphics.PointF
import android.graphics.Point
import android.graphics.Rect
import android.graphics.drawable.Drawable
import android.graphics.drawable.GradientDrawable
@@ -90,7 +90,7 @@ class MaximizeMenu(
        private val displayController: DisplayController,
        private val taskInfo: RunningTaskInfo,
        private val decorWindowContext: Context,
        private val positionSupplier: (Int, Int) -> PointF,
        private val positionSupplier: (Int, Int) -> Point,
        private val transactionSupplier: Supplier<Transaction> = Supplier { Transaction() }
) {
    private var maximizeMenu: AdditionalViewHostViewContainer? = null
@@ -100,14 +100,14 @@ class MaximizeMenu(
    private val cornerRadius = loadDimensionPixelSize(
            R.dimen.desktop_mode_maximize_menu_corner_radius
    ).toFloat()
    private lateinit var menuPosition: PointF
    private lateinit var menuPosition: Point
    private val menuPadding = loadDimensionPixelSize(R.dimen.desktop_mode_menu_padding)

    /** Position the menu relative to the caption's position. */
    fun positionMenu(t: Transaction) {
        menuPosition = positionSupplier(maximizeMenuView?.measureWidth() ?: 0,
                                        maximizeMenuView?.measureHeight() ?: 0)
        t.setPosition(leash, menuPosition.x, menuPosition.y)
        t.setPosition(leash, menuPosition.x.toFloat(), menuPosition.y.toFloat())
    }

    /** Creates and shows the maximize window. */
@@ -208,8 +208,8 @@ class MaximizeMenu(
            val menuHeight = menuView.measureHeight()
            menuPosition = positionSupplier(menuWidth, menuHeight)
            val lp = WindowManager.LayoutParams(
                    menuWidth.toInt(),
                    menuHeight.toInt(),
                    menuWidth,
                    menuHeight,
                    WindowManager.LayoutParams.TYPE_APPLICATION,
                    WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
                            or WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
@@ -222,7 +222,7 @@ class MaximizeMenu(

        // Bring menu to front when open
        t.setLayer(leash, TaskConstants.TASK_CHILD_LAYER_FLOATING_MENU)
                .setPosition(leash, menuPosition.x, menuPosition.y)
                .setPosition(leash, menuPosition.x.toFloat(), menuPosition.y.toFloat())
                .setCornerRadius(leash, cornerRadius)
                .show(leash)
        maximizeMenu =
@@ -1047,7 +1047,7 @@ interface MaximizeMenuFactory {
        displayController: DisplayController,
        taskInfo: RunningTaskInfo,
        decorWindowContext: Context,
        positionSupplier: (Int, Int) -> PointF,
        positionSupplier: (Int, Int) -> Point,
        transactionSupplier: Supplier<Transaction>
    ): MaximizeMenu
}
@@ -1060,7 +1060,7 @@ object DefaultMaximizeMenuFactory : MaximizeMenuFactory {
        displayController: DisplayController,
        taskInfo: RunningTaskInfo,
        decorWindowContext: Context,
        positionSupplier: (Int, Int) -> PointF,
        positionSupplier: (Int, Int) -> Point,
        transactionSupplier: Supplier<Transaction>
    ): MaximizeMenu {
        return MaximizeMenu(
+2 −2
Original line number Diff line number Diff line
@@ -60,7 +60,7 @@ import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.content.res.TypedArray;
import android.graphics.PointF;
import android.graphics.Point;
import android.graphics.Rect;
import android.graphics.Region;
import android.net.Uri;
@@ -1805,7 +1805,7 @@ public class DesktopModeWindowDecorationTests extends ShellTestCase {
                @NonNull DisplayController displayController,
                @NonNull ActivityManager.RunningTaskInfo taskInfo,
                @NonNull Context decorWindowContext,
                @NonNull Function2<? super Integer,? super Integer,? extends PointF>
                @NonNull Function2<? super Integer,? super Integer,? extends Point>
                    positionSupplier,
                @NonNull Supplier<SurfaceControl.Transaction> transactionSupplier) {
            return mMaximizeMenu;