Merge "Add seam space for performReorder in MultipageCellLayout" into udc-dev am: 7b01dbd811

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/23086317

Change-Id: Id90d5c81db2575917cee3ca9db9d1190fc692a18
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Treehugger Robot
2023-05-19 00:27:25 +00:00
committed by Automerger Merge Worker
2 changed files with 40 additions and 4 deletions

View File

@@ -1272,7 +1272,7 @@ public class CellLayout extends ViewGroup {
* @return The X, Y cell of a vacant area that can contain this object,
* nearest the requested location.
*/
private int[] findNearestArea(int relativeXPos, int relativeYPos, int minSpanX, int minSpanY,
protected int[] findNearestArea(int relativeXPos, int relativeYPos, int minSpanX, int minSpanY,
int spanX, int spanY, boolean ignoreOccupied, int[] result, int[] resultSpan) {
// For items with a spanX / spanY > 1, the passed in point (relativeXPos, relativeYPos)
// corresponds to the center of the item, but we are searching based on the top-left cell,

View File

@@ -24,7 +24,6 @@ import android.view.View;
import com.android.launcher3.celllayout.CellLayoutLayoutParams;
import com.android.launcher3.celllayout.MulticellReorderAlgorithm;
import com.android.launcher3.celllayout.ReorderAlgorithm;
import com.android.launcher3.util.CellAndSpan;
import com.android.launcher3.util.GridOccupancy;
@@ -46,6 +45,33 @@ public class MultipageCellLayout extends CellLayout {
this(context, attrs, 0);
}
@Override
protected int[] findNearestArea(int relativeXPos, int relativeYPos, int minSpanX, int minSpanY,
int spanX, int spanY, boolean ignoreOccupied, int[] result, int[] resultSpan) {
return createReorderAlgorithm().simulateSeam(
() -> super.findNearestArea(relativeXPos, relativeYPos, minSpanX, minSpanY, spanX,
spanY, ignoreOccupied, result, resultSpan));
}
@Override
public void getDirectionVectorForDrop(int dragViewCenterX, int dragViewCenterY, int spanX,
int spanY, View dragView, int[] resultDirection) {
createReorderAlgorithm().simulateSeam(
() -> {
super.getDirectionVectorForDrop(dragViewCenterX, dragViewCenterY, spanX, spanY,
dragView, resultDirection);
return 0;
});
}
@Override
public boolean isNearestDropLocationOccupied(int pixelX, int pixelY, int spanX, int spanY,
View dragView, int[] result) {
return createReorderAlgorithm().simulateSeam(
() -> super.isNearestDropLocationOccupied(pixelX, pixelY, spanX, spanY, dragView,
result));
}
public MultipageCellLayout(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
mLeftBackground = getContext().getDrawable(R.drawable.bg_celllayout);
@@ -71,13 +97,23 @@ public class MultipageCellLayout extends CellLayout {
cellX++;
}
int finalCellX = cellX;
return ((MulticellReorderAlgorithm) createReorderAlgorithm()).simulateSeam(
return createReorderAlgorithm().simulateSeam(
() -> super.createAreaForResize(finalCellX, cellY, spanX, spanY, dragView,
direction, commit));
}
@Override
public ReorderAlgorithm createReorderAlgorithm() {
int[] performReorder(int pixelX, int pixelY, int minSpanX, int minSpanY, int spanX, int spanY,
View dragView, int[] result, int[] resultSpan, int mode) {
if (pixelX >= getWidth() / 2) {
pixelX += getCellWidth();
}
return super.performReorder(pixelX, pixelY, minSpanX, minSpanY, spanX, spanY, dragView,
result, resultSpan, mode);
}
@Override
public MulticellReorderAlgorithm createReorderAlgorithm() {
return new MulticellReorderAlgorithm(this);
}