Correct size of AppWidget for color extraction.

Correct the size of the App Widget: first, compute the size when the
widget is positioned (it wasn't done), then do not apply the
transformation when computing the size of the widget when drawn.

Note: Somehow, there is a shift by 1 on the position on the x axis, both
in landscape and portrait. So I added a +1 to get the exact same values.
If not, we have a risk of getting different colors.

Fix: 188759989
Bug: 187907544
Test: Added logs and moved a widget by hand, check the actual
coordinates with hsv.

Change-Id: Ia3bd5b3e3ea9a3ef75f8cdf466a9800786646a94
This commit is contained in:
Pierre Barbier de Reuille
2021-05-19 22:45:16 +01:00
parent 194dcc0fd3
commit 1b8bbb6c40
2 changed files with 12 additions and 5 deletions

View File

@@ -1080,9 +1080,10 @@ public class CellLayout extends ViewGroup {
cellToRect(targetCell[0], targetCell[1], spanX, spanY, mTempRect);
// Now get the rect in drag layer coordinates.
getBoundsForViewInDragLayer(launcher.getDragLayer(), workspace, mTempRect, false,
getBoundsForViewInDragLayer(launcher.getDragLayer(), this, mTempRect, true,
mTmpFloatArray, mTempRectF);
Utilities.setRect(mTempRectF, mTempRect);
((LauncherAppWidgetHostView) view).handleDrag(mTempRect, pageId);
}
}
@@ -2594,7 +2595,9 @@ public class CellLayout extends ViewGroup {
final int cellWidth = mCellWidth;
final int cellHeight = mCellHeight;
final int hStartPadding = getPaddingLeft();
// We observe a shift of 1 pixel on the x coordinate compared to the actual cell coordinates
final int hStartPadding = getPaddingLeft()
+ (int) Math.ceil(getUnusedHorizontalSpace() / 2f);
final int vStartPadding = getPaddingTop();
int x = hStartPadding + (cellX * mBorderSpacing) + (cellX * cellWidth);