Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7b01dbd8 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add seam space for performReorder in MultipageCellLayout" into udc-dev

parents 0c66b151 96c46e7f
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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,
+39 −3
Original line number Diff line number Diff line
@@ -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);
    }