Merge "Fix drag and drop regression when dragging a scaled widget" into ub-launcher3-rvc-dev

This commit is contained in:
TreeHugger Robot
2020-04-09 19:06:10 +00:00
committed by Android (Google) Code Review
3 changed files with 14 additions and 8 deletions
+7 -2
View File
@@ -959,8 +959,13 @@ public class CellLayout extends ViewGroup {
height = r.height();
}
if (v != null && v.getViewType() == DraggableView.DRAGGABLE_ICON) {
left += ((mCellWidth * spanX) - dragOutline.getWidth()) / 2;
// Center horizontaly
left += ((mCellWidth * spanX) - dragOutline.getWidth()) / 2;
if (v != null && v.getViewType() == DraggableView.DRAGGABLE_WIDGET) {
// Center vertically
top += ((mCellHeight * spanY) - dragOutline.getHeight()) / 2;
} else if (v != null && v.getViewType() == DraggableView.DRAGGABLE_ICON) {
int cHeight = getShortcutsAndWidgets().getCellContentHeight();
int cellPaddingY = (int) Math.max(0, ((mCellHeight - cHeight) / 2f));
top += cellPaddingY;
@@ -92,6 +92,8 @@ public class DragPreviewProvider {
public Bitmap createDragBitmap() {
int width = 0;
int height = 0;
// Assume scaleX == scaleY, which is always the case for workspace items.
float scale = mView.getScaleX();
if (mView instanceof DraggableView) {
((DraggableView) mView).getVisualDragBounds(mTempRect);
width = mTempRect.width();
@@ -102,7 +104,7 @@ public class DragPreviewProvider {
}
return BitmapRenderer.createHardwareBitmap(width + blurSizeOutline,
height + blurSizeOutline, (c) -> drawDragView(c, 1));
height + blurSizeOutline, (c) -> drawDragView(c, scale));
}
public final void generateDragOutline(Bitmap preview) {
@@ -365,10 +365,9 @@ public class LauncherAppWidgetHostView extends NavigableAppWidgetHostView
@Override
public void getVisualDragBounds(Rect bounds) {
int x = (int) (1 - getScaleToFit()) * getMeasuredWidth() / 2;
int y = (int) (1 - getScaleToFit()) * getMeasuredWidth() / 2;
int width = (int) getScaleToFit() * getMeasuredWidth();
int height = (int) getScaleToFit() * getMeasuredHeight();
bounds.set(x, y , x + width, y + height);
int width = (int) (getMeasuredWidth() * mScaleToFit);
int height = (int) (getMeasuredHeight() * mScaleToFit);
bounds.set(0, 0 , width, height);
}
}