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

Commit 5d2a1f47 authored by Jeremy Sim's avatar Jeremy Sim Committed by Android (Google) Code Review
Browse files

Merge "Fix placement bug with split staging icon in RtL" into tm-dev

parents e15927ee 43c79704
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -239,12 +239,10 @@ public class FloatingTaskView extends FrameLayout {
     *                        offscreen).
     */
    void centerIconView(IconView iconView, float onScreenRectCenterX, float onScreenRectCenterY) {
        FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) iconView.getLayoutParams();
        mOrientationHandler.updateStagedSplitIconParams(params, onScreenRectCenterX,
        mOrientationHandler.updateStagedSplitIconParams(iconView, onScreenRectCenterX,
                onScreenRectCenterY, mFullscreenParams.mScaleX, mFullscreenParams.mScaleY,
                iconView.getDrawableWidth(), iconView.getDrawableHeight(),
                mActivity.getDeviceProfile(), mStagePosition);
        iconView.setLayoutParams(params);
    }

    private static class SplitOverlayProperties {
+5 −6
Original line number Diff line number Diff line
@@ -413,16 +413,15 @@ public class LandscapePagedViewHandler implements PagedOrientationHandler {
    }

    @Override
    public void updateStagedSplitIconParams(FrameLayout.LayoutParams out, float onScreenRectCenterX,
    public void updateStagedSplitIconParams(View out, float onScreenRectCenterX,
            float onScreenRectCenterY, float fullscreenScaleX, float fullscreenScaleY,
            int drawableWidth, int drawableHeight, DeviceProfile dp,
            @StagePosition int stagePosition) {
        float inset = dp.getInsets().top;
        out.leftMargin = Math.round(onScreenRectCenterX / fullscreenScaleX
                - 1.0f * drawableWidth / 2);
        out.topMargin = Math.round((onScreenRectCenterY + (inset / 2f)) / fullscreenScaleY
                - 1.0f * drawableHeight / 2);

        out.setX(Math.round(onScreenRectCenterX / fullscreenScaleX
                - 1.0f * drawableWidth / 2));
        out.setY(Math.round((onScreenRectCenterY + (inset / 2f)) / fullscreenScaleY
                - 1.0f * drawableHeight / 2));
    }

    @Override
+2 −2
Original line number Diff line number Diff line
@@ -117,7 +117,7 @@ public interface PagedOrientationHandler {

    /**
     * Centers an icon in the split staging area, accounting for insets.
     * @param out The LayoutParams of the icon that needs to be centered.
     * @param out The icon that needs to be centered.
     * @param onScreenRectCenterX The x-center of the on-screen staging area (most of the Rect is
     *                        offscreen).
     * @param onScreenRectCenterY The y-center of the on-screen staging area (most of the Rect is
@@ -129,7 +129,7 @@ public interface PagedOrientationHandler {
     * @param dp The device profile, used to report rotation and hardware insets.
     * @param stagePosition 0 if the staging area is pinned to top/left, 1 for bottom/right.
     */
    void updateStagedSplitIconParams(FrameLayout.LayoutParams out, float onScreenRectCenterX,
    void updateStagedSplitIconParams(View out, float onScreenRectCenterX,
            float onScreenRectCenterY, float fullscreenScaleX, float fullscreenScaleY,
            int drawableWidth, int drawableHeight, DeviceProfile dp,
            @StagePosition int stagePosition);
+11 −11
Original line number Diff line number Diff line
@@ -458,29 +458,29 @@ public class PortraitPagedViewHandler implements PagedOrientationHandler {
    }

    @Override
    public void updateStagedSplitIconParams(FrameLayout.LayoutParams out, float onScreenRectCenterX,
    public void updateStagedSplitIconParams(View out, float onScreenRectCenterX,
            float onScreenRectCenterY, float fullscreenScaleX, float fullscreenScaleY,
            int drawableWidth, int drawableHeight, DeviceProfile dp,
            @StagePosition int stagePosition) {
        boolean pinToRight = stagePosition == STAGE_POSITION_BOTTOM_OR_RIGHT;
        if (!dp.isLandscape) {
            float inset = dp.getInsets().top;
            out.leftMargin = Math.round(onScreenRectCenterX / fullscreenScaleX
                    - 1.0f * drawableWidth / 2);
            out.topMargin = Math.round((onScreenRectCenterY + (inset / 2f)) / fullscreenScaleY
                    - 1.0f * drawableHeight / 2);
            out.setX(Math.round(onScreenRectCenterX / fullscreenScaleX
                    - 1.0f * drawableWidth / 2));
            out.setY(Math.round((onScreenRectCenterY + (inset / 2f)) / fullscreenScaleY
                    - 1.0f * drawableHeight / 2));
        } else {
            if (pinToRight) {
                float inset = dp.getInsets().right;
                out.leftMargin = Math.round((onScreenRectCenterX - (inset / 2f)) / fullscreenScaleX
                        - 1.0f * drawableWidth / 2);
                out.setX(Math.round((onScreenRectCenterX - (inset / 2f)) / fullscreenScaleX
                        - 1.0f * drawableWidth / 2));
            } else {
                float inset = dp.getInsets().left;
                out.leftMargin = Math.round((onScreenRectCenterX + (inset / 2f)) / fullscreenScaleX
                        - 1.0f * drawableWidth / 2);
                out.setX(Math.round((onScreenRectCenterX + (inset / 2f)) / fullscreenScaleX
                        - 1.0f * drawableWidth / 2));
            }
            out.topMargin = Math.round(onScreenRectCenterY / fullscreenScaleY
                    - 1.0f * drawableHeight / 2);
            out.setY(Math.round(onScreenRectCenterY / fullscreenScaleY
                    - 1.0f * drawableHeight / 2));
        }
    }