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

Commit 2b188846 authored by Jorge Gil's avatar Jorge Gil
Browse files

Update window header spec

1) Remove app name when app is using custom headers
2) Adjust padding/margins to support hiding the app name
3) Add empty drag zone on right-aligned bounding rect
4) Update close button vector, size and padding
5) Update app chip app icon size to 24x24dp

Bug: 316387515
Test: enable/disable APPEARANCE_TRANSPARENT_CAPTION_BAR_BACKGROUND flag
and observe window header UI updating to allow more custom space and a
drag-only area.

Change-Id: Ic27b98861521dbcf1253ff7618e8e773bb763988
parent cb5c34af
Loading
Loading
Loading
Loading
+26 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!--
  ~ Copyright (C) 2024 The Android Open Source Project
  ~
  ~ Licensed under the Apache License, Version 2.0 (the "License");
  ~ you may not use this file except in compliance with the License.
  ~ You may obtain a copy of the License at
  ~
  ~      http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing, software
  ~ distributed under the License is distributed on an "AS IS" BASIS,
  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License.
  -->
<vector
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportHeight="24"
    android:viewportWidth="24">
    <path
        android:fillColor="#FF000000"
        android:pathData="M19,6.41L17.59,5 12,10.59 6.41,5 5,6.41 10.59,12 5,17.59 6.41,19 12,13.41 17.59,19 19,17.59 13.41,12z"/>
</vector>
+11 −9
Original line number Diff line number Diff line
@@ -33,14 +33,15 @@
        android:orientation="horizontal"
        android:clickable="true"
        android:focusable="true"
        android:paddingStart="6dp"
        android:paddingEnd="8dp">
        android:paddingStart="12dp">
        <ImageView
            android:id="@+id/application_icon"
            android:layout_width="@dimen/desktop_mode_caption_icon_radius"
            android:layout_height="@dimen/desktop_mode_caption_icon_radius"
            android:layout_gravity="center_vertical"
            android:contentDescription="@string/app_icon_text" />
            android:contentDescription="@string/app_icon_text"
            android:layout_marginStart="6dp"
            android:scaleType="centerCrop"/>

        <TextView
            android:id="@+id/application_name"
@@ -53,8 +54,7 @@
            android:lineHeight="20dp"
            android:layout_gravity="center_vertical"
            android:layout_weight="1"
            android:paddingStart="8dp"
            android:paddingEnd="8dp"
            android:layout_marginStart="8dp"
            tools:text="Gmail"/>

        <ImageButton
@@ -67,6 +67,7 @@
            android:scaleType="fitCenter"
            android:clickable="false"
            android:focusable="false"
            android:layout_marginHorizontal="8dp"
            android:layout_gravity="center_vertical"/>

    </LinearLayout>
@@ -87,14 +88,15 @@

    <ImageButton
        android:id="@+id/close_window"
        android:layout_width="40dp"
        android:layout_width="44dp"
        android:layout_height="40dp"
        android:padding="4dp"
        android:paddingHorizontal="10dp"
        android:paddingVertical="8dp"
        android:layout_marginEnd="8dp"
        android:tint="?androidprv:attr/materialColorOnSurface"
        android:background="?android:selectableItemBackgroundBorderless"
        android:contentDescription="@string/close_button_text"
        android:src="@drawable/decor_close_button_dark"
        android:scaleType="fitCenter"
        android:src="@drawable/desktop_mode_header_ic_close"
        android:scaleType="centerCrop"
        android:gravity="end"/>
</com.android.wm.shell.windowdecor.WindowDecorLinearLayout>
 No newline at end of file
+12 −5
Original line number Diff line number Diff line
@@ -434,15 +434,22 @@
    <!-- (32 dp buttons + 10dp margins) * 3 buttons-->
    <dimen name="caption_right_buttons_width">126dp</dimen>

    <!-- 2 buttons * 48dp button size. -->
    <dimen name="desktop_mode_right_edge_buttons_width">96dp</dimen>
    <!-- 2 buttons * 44dp button size + 16dp total margins. -->
    <dimen name="desktop_mode_right_edge_buttons_width">104dp</dimen>

    <!-- 22dp padding + 24dp app icon + 16dp expand button.
         Text varies in size, we will calculate that width separately. -->
    <dimen name="desktop_mode_app_details_width_minus_text">62dp</dimen>

    <!-- 22dp padding + 24dp app icon + 16dp expand button + 86dp text (max) -->
    <dimen name="desktop_mode_app_details_max_width">148dp</dimen>
    <!-- When custom headers are requested, this is the width of the left-aligned region that is
         taken up by caption elements and extra margins. The customizable region starts at the
         end of this area. -->
    <dimen name="desktop_mode_customizable_caption_margin_start">84dp</dimen>

    <!-- When custom headers are requested, this is the width of the right-aligned region that is
         taken up by caption elements and extra margins. The customizable region ends at the
         start of this area. -->
    <dimen name="desktop_mode_customizable_caption_margin_end">152dp</dimen>

    <!-- The width of the maximize menu in desktop mode. -->
    <dimen name="desktop_mode_maximize_menu_width">287dp</dimen>
@@ -490,7 +497,7 @@
    <dimen name="desktop_mode_handle_menu_corner_radius">26dp</dimen>

    <!-- The radius of the caption menu icon. -->
    <dimen name="desktop_mode_caption_icon_radius">28dp</dimen>
    <dimen name="desktop_mode_caption_icon_radius">24dp</dimen>

    <!-- The radius of the caption menu shadow. -->
    <dimen name="desktop_mode_handle_menu_shadow_radius">2dp</dimen>
+11 −14
Original line number Diff line number Diff line
@@ -318,28 +318,25 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin
        relayoutParams.mCaptionHeightId = getCaptionHeightIdStatic(taskInfo.getWindowingMode());
        relayoutParams.mCaptionWidthId = getCaptionWidthId(relayoutParams.mLayoutResId);

        // The "app controls" type caption bar should report the occluding elements as bounding
        // rects to the insets system so that apps can draw in the empty space left in the center.
        if (captionLayoutId == R.layout.desktop_mode_app_controls_window_decor) {
            // The "app chip" section of the caption bar, it's aligned to the left and its width
            // varies depending on the length of the app name, but we'll report its max width for
            // now.
            // TODO(b/316387515): consider reporting the true width after it's been laid out.
        if (captionLayoutId == R.layout.desktop_mode_app_controls_window_decor
                && TaskInfoKt.isTransparentCaptionBarAppearance(taskInfo)) {
            // App is requesting to customize the caption bar. Allow input to fall through to the
            // windows below so that the app can respond to input events on their custom content.
            relayoutParams.mAllowCaptionInputFallthrough = true;
            // Report occluding elements as bounding rects to the insets system so that apps can
            // draw in the empty space in the center:
            //   First, the "app chip" section of the caption bar (+ some extra margins).
            final RelayoutParams.OccludingCaptionElement appChipElement =
                    new RelayoutParams.OccludingCaptionElement();
            appChipElement.mWidthResId = R.dimen.desktop_mode_app_details_max_width;
            appChipElement.mWidthResId = R.dimen.desktop_mode_customizable_caption_margin_start;
            appChipElement.mAlignment = RelayoutParams.OccludingCaptionElement.Alignment.START;
            relayoutParams.mOccludingCaptionElements.add(appChipElement);
            // The "controls" section of the caption bar (maximize, close btns). These are aligned
            // to the right of the caption bar and have a fixed width.
            // TODO(b/316387515): add additional padding for an exclusive drag-move region.
            //   Then, the right-aligned section (drag space, maximize and close buttons).
            final RelayoutParams.OccludingCaptionElement controlsElement =
                    new RelayoutParams.OccludingCaptionElement();
            controlsElement.mWidthResId = R.dimen.desktop_mode_right_edge_buttons_width;
            controlsElement.mWidthResId = R.dimen.desktop_mode_customizable_caption_margin_end;
            controlsElement.mAlignment = RelayoutParams.OccludingCaptionElement.Alignment.END;
            relayoutParams.mOccludingCaptionElements.add(controlsElement);
            relayoutParams.mAllowCaptionInputFallthrough =
                    TaskInfoKt.isTransparentCaptionBarAppearance(taskInfo);
        }
        if (DesktopModeStatus.useWindowShadow(/* isFocusedWindow= */ taskInfo.isFocused)) {
            relayoutParams.mShadowRadiusId = taskInfo.isFocused
+2 −0
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@ import android.widget.ImageButton
import android.widget.ImageView
import android.widget.TextView
import androidx.core.content.withStyledAttributes
import androidx.core.view.isVisible
import com.android.internal.R.attr.materialColorOnSecondaryContainer
import com.android.internal.R.attr.materialColorOnSurface
import com.android.internal.R.attr.materialColorSecondaryContainer
@@ -76,6 +77,7 @@ internal class DesktopModeAppControlsWindowDecorationViewHolder(
        closeWindowButton.imageTintList = ColorStateList.valueOf(color)
        maximizeWindowButton.imageTintList = ColorStateList.valueOf(color)
        expandMenuButton.imageTintList = ColorStateList.valueOf(color)
        appNameTextView.isVisible = !taskInfo.isTransparentCaptionBarAppearance
        appNameTextView.setTextColor(color)
        appIconImageView.imageAlpha = alpha
        maximizeWindowButton.imageAlpha = alpha