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

Commit 080296d4 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Fix Bubbles flying away and never returning." into rvc-dev am:...

Merge "Fix Bubbles flying away and never returning." into rvc-dev am: 0740585a am: 0982c860 am: 240a79cb am: a20bad99

Change-Id: I2fe7c304d40c0c45aba0edb77d8e3dd2a7b8e614
parents fbc377cb a20bad99
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -956,6 +956,8 @@ public class BubbleStackView extends FrameLayout {
        mVerticalPosPercentBeforeRotation =
                (mStackAnimationController.getStackPosition().y - allowablePos.top)
                        / (allowablePos.bottom - allowablePos.top);
        mVerticalPosPercentBeforeRotation =
                Math.max(0f, Math.min(1f, mVerticalPosPercentBeforeRotation));
        addOnLayoutChangeListener(mOrientationChangedListener);
        hideFlyoutImmediate();
    }
+1 −0
Original line number Diff line number Diff line
@@ -168,6 +168,7 @@ public class PipMotionHelper implements PipAppOpsListener.Callback,
    void synchronizePinnedStackBounds() {
        cancelAnimations();
        mBounds.set(mPipTaskOrganizer.getLastReportedBounds());
        mFloatingContentCoordinator.onContentMoved(this);
    }

    /**
+26 −13
Original line number Diff line number Diff line
@@ -187,17 +187,24 @@ class FloatingContentCoordinator @Inject constructor() {
                // Tell that content to get out of the way, and save the bounds it says it's moving
                // (or animating) to.
                .forEach { (content, bounds) ->
                    content.moveToBounds(
                            content.calculateNewBoundsOnOverlap(
                    val newBounds = content.calculateNewBoundsOnOverlap(
                            conflictingNewBounds,
                            // Pass all of the content bounds except the bounds of the
                            // content we're asking to move, and the conflicting new bounds
                            // (since those are passed separately).
                            otherContentBounds = allContentBounds.values
                                    .minus(bounds)
                                            .minus(conflictingNewBounds)))
                                    .minus(conflictingNewBounds))

                    // If the new bounds are empty, it means there's no non-overlapping position
                    // that is in bounds. Just leave the content where it is. This should normally
                    // not happen, but sometimes content like PIP reports incorrect bounds
                    // temporarily.
                    if (!newBounds.isEmpty) {
                        content.moveToBounds(newBounds)
                        allContentBounds[content] = content.getFloatingBoundsOnScreen()
                    }
                }

        currentlyResolvingConflicts = false
    }
@@ -229,8 +236,8 @@ class FloatingContentCoordinator @Inject constructor() {
         * @param allowedBounds The area within which we're allowed to find new bounds for the
         * content.
         * @return New bounds for the content that don't intersect the exclusion rects or the
         * newly overlapping rect, and that is within bounds unless no possible in-bounds position
         * exists.
         * newly overlapping rect, and that is within bounds - or an empty Rect if no in-bounds
         * position exists.
         */
        @JvmStatic
        fun findAreaForContentVertically(
@@ -274,7 +281,13 @@ class FloatingContentCoordinator @Inject constructor() {
                            !overlappingContentPushingDown && !positionAboveInBounds

            // Return the content rect, but offset to reflect the new position.
            return if (usePositionBelow) newContentBoundsBelow else newContentBoundsAbove
            val newBounds = if (usePositionBelow) newContentBoundsBelow else newContentBoundsAbove

            // If the new bounds are within the allowed bounds, return them. If not, it means that
            // there are no legal new bounds. This can happen if the new content's bounds are too
            // large (for example, full-screen PIP). Since there is no reasonable action to take
            // here, return an empty Rect and we will just not move the content.
            return if (allowedBounds.contains(newBounds)) newBounds else Rect()
        }

        /**