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

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

Merge "Fix wrong getIconBounds method inside BubbleTextView" into sc-v2-dev

parents e4f6f951 c2f024be
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);