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

Commit 31926e6c authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Fix wrong getIconBounds method inside BubbleTextView" into sc-v2-dev am: 31bd6633

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/16186109

Change-Id: I20d38e8b3bef394ce3daba18c773e3f066c9a750
parents 3f6a430c 31bd6633
Loading
Loading
Loading
Loading
+23 −11
Original line number Diff line number Diff line
@@ -141,6 +141,7 @@ public class BubbleTextView extends TextView implements ItemInfoUpdateReceiver,
    private final CheckLongPressHelper mLongPressHelper;

    private final boolean mLayoutHorizontal;
    private final boolean mIsRtl;
    private final int mIconSize;

    @ViewDebug.ExportedProperty(category = "launcher")
@@ -185,6 +186,8 @@ public class BubbleTextView extends TextView implements ItemInfoUpdateReceiver,
        TypedArray a = context.obtainStyledAttributes(attrs,
                R.styleable.BubbleTextView, defStyle, 0);
        mLayoutHorizontal = a.getBoolean(R.styleable.BubbleTextView_layoutHorizontal, false);
        mIsRtl = (getResources().getConfiguration().getLayoutDirection()
                == View.LAYOUT_DIRECTION_RTL);
        DeviceProfile grid = mActivity.getDeviceProfile();

        mDisplay = a.getInteger(R.styleable.BubbleTextView_iconDisplay, DISPLAY_WORKSPACE);
@@ -581,18 +584,28 @@ public class BubbleTextView extends TextView implements ItemInfoUpdateReceiver,
        return mDotInfo != null;
    }

    /**
     * Get the icon bounds on the view depending on the layout type.
     */
    public void getIconBounds(Rect outBounds) {
        getIconBounds(this, outBounds, mIconSize);
        getIconBounds(mIconSize, outBounds);
    }

    public static void getIconBounds(View iconView, Rect outBounds, int iconSize) {
        int top = iconView.getPaddingTop();
        int left = (iconView.getWidth() - iconSize) / 2;
        int right = left + iconSize;
        int bottom = top + iconSize;
        outBounds.set(left, top, right, bottom);
    /**
     * Get the icon bounds on the view depending on the layout type.
     */
    public void getIconBounds(int iconSize, Rect outBounds) {
        Utilities.setRectToViewCenter(this, iconSize, outBounds);
        if (mLayoutHorizontal) {
            if (mIsRtl) {
                outBounds.offsetTo(getWidth() - iconSize - getPaddingRight(), outBounds.top);
            } else {
                outBounds.offsetTo(getPaddingLeft(), outBounds.top);
            }
        } else {
            outBounds.offsetTo(outBounds.left, getPaddingTop());
        }
    }


    /**
     * Sets whether to vertically center the content.
@@ -980,8 +993,7 @@ public class BubbleTextView extends TextView implements ItemInfoUpdateReceiver,

    @Override
    public void getWorkspaceVisualDragBounds(Rect bounds) {
        DeviceProfile grid = mActivity.getDeviceProfile();
        BubbleTextView.getIconBounds(this, bounds, grid.iconSizePx);
        getIconBounds(mIconSize, bounds);
    }

    private int getIconSizeForDisplay(int display) {
@@ -998,7 +1010,7 @@ public class BubbleTextView extends TextView implements ItemInfoUpdateReceiver,
    }

    public void getSourceVisualDragBounds(Rect bounds) {
        BubbleTextView.getIconBounds(this, bounds, getIconSizeForDisplay(mDisplay));
        getIconBounds(mIconSize, bounds);
    }

    @Override
+12 −0
Original line number Diff line number Diff line
@@ -526,6 +526,18 @@ public final class Utilities {
        return defaultValue;
    }

    /**
     * Using the view's bounds and icon size, calculate where the icon bounds will
     * be if it was positioned at the center of the view.
     */
    public static void setRectToViewCenter(View iconView, int iconSize, Rect outBounds) {
        int top = (iconView.getHeight() - iconSize) / 2;
        int left = (iconView.getWidth() - iconSize) / 2;
        int right = left + iconSize;
        int bottom = top + iconSize;
        outBounds.set(left, top, right, bottom);
    }

    /**
     * Ensures that a value is within given bounds. Specifically:
     * If value is less than lowerBound, return lowerBound; else if value is greater than upperBound,
+4 −1
Original line number Diff line number Diff line
@@ -628,7 +628,10 @@ public class FolderIcon extends FrameLayout implements FolderListener, IconLabel
    public void drawDot(Canvas canvas) {
        if (!mForceHideDot && ((mDotInfo != null && mDotInfo.hasDot()) || mDotScale > 0)) {
            Rect iconBounds = mDotParams.iconBounds;
            BubbleTextView.getIconBounds(this, iconBounds, mActivity.getDeviceProfile().iconSizePx);

            Utilities.setRectToViewCenter(this, mActivity.getDeviceProfile().iconSizePx,
                    iconBounds);
            iconBounds.offsetTo(iconBounds.left, getPaddingTop());
            float iconScale = (float) mBackground.previewSize / iconBounds.width();
            Utilities.scaleRectAboutCenter(iconBounds, iconScale);