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

Commit 4ce77396 authored by Vinit Nayak's avatar Vinit Nayak
Browse files

Take margin insets into account when setting position

Previously we computed insets for task menu position
whenever a Task was told that orientation had changed.
This missed a path for the TaskMenuView's onScrollChanged()
listener, which also calls set position and wasn't taking
the insets into account.

Moved the inset into setPosition() directly so it's caught
on all code paths.

Also noticed 2 bugs where
* We were calling updateChildTaskOrientation() twice, it
already happens in the call to updateOrientationHandler()
* We were directly modifying insets from the activity's
drag layer instead of copying those insets to another rect
and then modifying (this is no longer an issue since we
are not touching those insets at all anymore)

Bug: 192400086
Test: Rotated w/ task menu open for fake and real
landscape. Nothing seems broken.
Note real landscape hides the menu whereas fake one
shows it (which was behavior before this change)

Change-Id: I613dac9519220f49285655ef11a1f72e4a6d31bd
parent d4b713c7
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -1665,7 +1665,6 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
        pa.addListener(AnimatorListeners.forSuccessCallback(() -> {
            setLayoutRotation(newRotation, mOrientationState.getDisplayRotation());
            mActivity.getDragLayer().recreateControllers();
            updateChildTaskOrientations();
            setRecentsChangedOrientation(false).start();
        }));
        pa.start();
+11 −7
Original line number Diff line number Diff line
@@ -59,6 +59,7 @@ public class TaskMenuView extends AbstractFloatingView implements OnScrollChange

    private static final int REVEAL_OPEN_DURATION = 150;
    private static final int REVEAL_CLOSE_DURATION = 100;
    private final float mTaskInsetMargin;

    private BaseDraggingActivity mActivity;
    private TextView mTaskName;
@@ -75,6 +76,7 @@ public class TaskMenuView extends AbstractFloatingView implements OnScrollChange

        mActivity = BaseDraggingActivity.fromContext(context);
        setClipToOutline(true);
        mTaskInsetMargin = getResources().getDimension(R.dimen.task_card_margin);
    }

    @Override
@@ -124,8 +126,13 @@ public class TaskMenuView extends AbstractFloatingView implements OnScrollChange

    private void setPosition(float x, float y, int overscrollShift) {
        PagedOrientationHandler pagedOrientationHandler = mTaskView.getPagedOrientationHandler();
        // Inset due to margin
        PointF additionalInset = pagedOrientationHandler
                .getAdditionalInsetForTaskMenu(mTaskInsetMargin);
        int taskTopMargin = mActivity.getDeviceProfile().overviewTaskThumbnailTopMarginPx;
        float adjustedY = y + taskTopMargin;

        float adjustedY = y + taskTopMargin - additionalInset.y;
        float adjustedX = x - additionalInset.x;
        // Changing pivot to make computations easier
        // NOTE: Changing the pivots means the rotated view gets rotated about the new pivots set,
        // which would render the X and Y position set here incorrect
@@ -137,7 +144,8 @@ public class TaskMenuView extends AbstractFloatingView implements OnScrollChange
            setPivotY(0);
        }
        setRotation(pagedOrientationHandler.getDegreesRotated());
        setX(pagedOrientationHandler.getTaskMenuX(x, mTaskView.getThumbnail(), overscrollShift));
        setX(pagedOrientationHandler.getTaskMenuX(adjustedX,
                mTaskView.getThumbnail(), overscrollShift));
        setY(pagedOrientationHandler.getTaskMenuY(
                adjustedY, mTaskView.getThumbnail(), overscrollShift));
    }
@@ -228,8 +236,7 @@ public class TaskMenuView extends AbstractFloatingView implements OnScrollChange
    private void orientAroundTaskView(TaskView taskView) {
        PagedOrientationHandler orientationHandler = taskView.getPagedOrientationHandler();
        measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED);
        float taskInsetMargin = getResources().getDimension(R.dimen.task_card_margin);
        orientationHandler.setTaskMenuAroundTaskView(this, taskInsetMargin);
        orientationHandler.setTaskMenuAroundTaskView(this, mTaskInsetMargin);
        mActivity.getDragLayer().getDescendantRectRelativeToSelf(taskView, sTempRect);
        Rect insets = mActivity.getDragLayer().getInsets();
        BaseDragLayer.LayoutParams params = (BaseDragLayer.LayoutParams) getLayoutParams();
@@ -243,9 +250,6 @@ public class TaskMenuView extends AbstractFloatingView implements OnScrollChange
        setScaleY(taskView.getScaleY());
        orientationHandler.setTaskOptionsMenuLayoutOrientation(
                mActivity.getDeviceProfile(), mOptionLayout);
        PointF additionalInset = orientationHandler.getAdditionalInsetForTaskMenu(taskInsetMargin);
        insets.left += additionalInset.x;
        insets.top += additionalInset.y;
        setPosition(sTempRect.left - insets.left, sTempRect.top - insets.top, 0);
    }