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

Commit cb6dff62 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge changes I6ce23251,I56fca1b7 into sc-dev

* changes:
  Update the resize frame to use the forced radius.
  Enforce rounded corners on App Widgets.
parents acb3cac9 452df2d5
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@

        <!-- Frame -->
        <ImageView
            android:id="@+id/widget_resize_frame"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="center"
+3 −0
Original line number Diff line number Diff line
@@ -283,4 +283,7 @@
<!-- Taskbar related (placeholders to compile in Launcher3 without Quickstep) -->
    <dimen name="taskbar_size">0dp</dimen>

    <!-- Size of the maximum radius for the enforced rounded rectangles. -->
    <dimen name="enforced_rounded_corner_max_radius">16dp</dimen>

</resources>
+12 −0
Original line number Diff line number Diff line
@@ -14,12 +14,15 @@ import android.appwidget.AppWidgetProviderInfo;
import android.content.Context;
import android.graphics.Point;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.GradientDrawable;
import android.os.Bundle;
import android.util.AttributeSet;
import android.util.SizeF;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ImageView;

import androidx.annotation.Nullable;

@@ -166,6 +169,15 @@ public class AppWidgetResizeFrame extends AbstractFloatingView implements View.O
        DragLayer dl = launcher.getDragLayer();
        AppWidgetResizeFrame frame = (AppWidgetResizeFrame) launcher.getLayoutInflater()
                .inflate(R.layout.app_widget_resize_frame, dl, false);
        if (widget.hasEnforcedCornerRadius()) {
            float enforcedCornerRadius = widget.getEnforcedCornerRadius();
            ImageView imageView = frame.findViewById(R.id.widget_resize_frame);
            Drawable d = imageView.getDrawable();
            if (d instanceof GradientDrawable) {
                GradientDrawable gd = (GradientDrawable) d.mutate();
                gd.setCornerRadius(enforcedCornerRadius);
            }
        }
        frame.setupForWidget(widget, cellLayout, dl);
        ((DragLayer.LayoutParams) frame.getLayoutParams()).customPosition = true;

+3 −0
Original line number Diff line number Diff line
@@ -215,6 +215,9 @@ public final class FeatureFlags {
    public static final BooleanFlag ENABLE_SPLIT_SELECT = getDebugFlag(
            "ENABLE_SPLIT_SELECT", false, "Uses new split screen selection overview UI");

    public static final BooleanFlag ENABLE_ENFORCED_ROUNDED_CORNERS = new DeviceFlag(
            "ENABLE_ENFORCED_ROUNDED_CORNERS", true, "Enforce rounded corners on all App Widgets");

    public static void initialize(Context context) {
        synchronized (sDebugFlags) {
            for (DebugFlag flag : sDebugFlags) {
+20 −0
Original line number Diff line number Diff line
@@ -17,8 +17,12 @@ package com.android.launcher3.dragndrop;

import android.graphics.Canvas;
import android.graphics.ColorFilter;
import android.graphics.Outline;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.PixelFormat;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.drawable.Drawable;

import com.android.launcher3.widget.LauncherAppWidgetHostView;
@@ -28,14 +32,30 @@ public final class AppWidgetHostViewDrawable extends Drawable {

    private final LauncherAppWidgetHostView mAppWidgetHostView;
    private Paint mPaint = new Paint();
    private final Path mClipPath;

    public AppWidgetHostViewDrawable(LauncherAppWidgetHostView appWidgetHostView) {
        mAppWidgetHostView = appWidgetHostView;
        Path clipPath = null;
        if (appWidgetHostView.getClipToOutline()) {
            Outline outline = new Outline();
            mAppWidgetHostView.getOutlineProvider().getOutline(mAppWidgetHostView, outline);
            Rect rect = new Rect();
            if (outline.getRect(rect)) {
                float radius = outline.getRadius();
                clipPath = new Path();
                clipPath.addRoundRect(new RectF(rect), radius, radius, Path.Direction.CCW);
            }
        }
        mClipPath = clipPath;
    }

    @Override
    public void draw(Canvas canvas) {
        int saveCount = canvas.saveLayer(0, 0, getIntrinsicWidth(), getIntrinsicHeight(), mPaint);
        if (mClipPath != null) {
            canvas.clipPath(mClipPath);
        }
        mAppWidgetHostView.draw(canvas);
        canvas.restoreToCount(saveCount);
    }
Loading