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

Commit b9ee5167 authored by Vinit Nayak's avatar Vinit Nayak
Browse files

Improve Split portrait gesture animation

* Crop out taskbar from bottom thumbnail for vertical split
* TODO: Need to re-calculate thumbnail sizes if taskbar
 is stashed. There's also a very slight rounding error
 somewhere even in the unstashed case that needs to be
 revisited

Bug: 219411750
Test: Start gesture animation in split in potrait
Change-Id: Id6653a352d1eac54b205f3efca740b4e56c7facf
parent 5e093f4a
Loading
Loading
Loading
Loading
+29 −13
Original line number Diff line number Diff line
@@ -61,26 +61,42 @@ public class PreviewPositionHelper {
     * Updates the matrix based on the provided parameters
     */
    public void updateThumbnailMatrix(Rect thumbnailBounds, ThumbnailData thumbnailData,
            int canvasWidth, int canvasHeight, int screenWidthPx, int taskbarSize, boolean isTablet,
            int canvasWidth, int canvasHeight, int screenWidthPx, int screenHeightPx,
            int taskbarSize, boolean isTablet,
            int currentRotation, boolean isRtl) {
        boolean isRotated = false;
        boolean isOrientationDifferent;

        float fullscreenTaskWidth = screenWidthPx;
        if (mSplitBounds != null && !mSplitBounds.appsStackedVertically) {
        int thumbnailRotation = thumbnailData.rotation;
        int deltaRotate = getRotationDelta(currentRotation, thumbnailRotation);
        RectF thumbnailClipHint = new RectF();

        float scaledTaskbarSize = 0;
        if (mSplitBounds != null) {
            float fullscreenTaskWidth;
            float fullscreenTaskHeight;
            float canvasScreenRatio;

            float taskPercent;
            if (!mSplitBounds.appsStackedVertically) {
                // For landscape, scale the width
            float taskPercent = mDesiredStagePosition == STAGE_POSITION_TOP_OR_LEFT
                taskPercent = mDesiredStagePosition == STAGE_POSITION_TOP_OR_LEFT
                        ? mSplitBounds.leftTaskPercent
                        : (1 - (mSplitBounds.leftTaskPercent + mSplitBounds.dividerWidthPercent));
                // Scale landscape width to that of actual screen
                fullscreenTaskWidth = screenWidthPx * taskPercent;
                canvasScreenRatio = canvasWidth / fullscreenTaskWidth;
            } else {
                taskPercent = mDesiredStagePosition != STAGE_POSITION_TOP_OR_LEFT
                        ? mSplitBounds.leftTaskPercent
                        : (1 - (mSplitBounds.leftTaskPercent + mSplitBounds.dividerWidthPercent));
                // Scale landscape width to that of actual screen
                fullscreenTaskHeight = screenHeightPx * taskPercent;
                canvasScreenRatio = canvasHeight / fullscreenTaskHeight;
            }
        int thumbnailRotation = thumbnailData.rotation;
        int deltaRotate = getRotationDelta(currentRotation, thumbnailRotation);
        RectF thumbnailClipHint = new RectF();
        float canvasScreenRatio = canvasWidth / fullscreenTaskWidth;
        float scaledTaskbarSize = taskbarSize * canvasScreenRatio;
            scaledTaskbarSize = taskbarSize * canvasScreenRatio;
            thumbnailClipHint.bottom = isTablet ? scaledTaskbarSize : 0;
        }

        float scale = thumbnailData.scale;
        final float thumbnailScale;
+2 −0
Original line number Diff line number Diff line
@@ -148,6 +148,7 @@ constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0

        val currentRotation: Int = display.rotation
        val displayWidthPx = windowMetrics.bounds.width()
        val displayHeightPx = windowMetrics.bounds.height()
        val isRtl = layoutDirection == LAYOUT_DIRECTION_RTL
        val isTablet = isTablet(context)
        val taskbarSize =
@@ -163,6 +164,7 @@ constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
            measuredWidth,
            measuredHeight,
            displayWidthPx,
            displayHeightPx,
            taskbarSize,
            isTablet,
            currentRotation,