Merge "Fix drag and drop regression when dragging a scaled widget" into ub-launcher3-rvc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
94c627cf5c
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user