mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-02-18 18:28:20 +00:00
Merge "Fix wrong getIconBounds method inside BubbleTextView" into sc-v2-dev am: 31bd663332
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/16186109 Change-Id: I24ecb290b780f7fb75af827d262131ce62847243
This commit is contained in:
@@ -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,19 +584,29 @@ 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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user