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

Commit fb07fc02 authored by Josh Tsuji's avatar Josh Tsuji Committed by Android (Google) Code Review
Browse files

Merge "Adds currentlyResolvingConflicts to the coordinator."

parents c6b89516 6b34e2b0
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
@@ -97,6 +97,14 @@ class FloatingContentCoordinator @Inject constructor() {
    /** The bounds of all pieces of floating content added to the coordinator. */
    private val allContentBounds: MutableMap<FloatingContent, Rect> = HashMap()

    /**
     * Whether we are currently resolving conflicts by asking content to move. If we are, we'll
     * temporarily ignore calls to [onContentMoved] - those calls are from the content that is
     * moving to new, conflict-free bounds, so we don't need to perform conflict detection
     * calculations in response.
     */
    private var currentlyResolvingConflicts = false

    /**
     * Makes the coordinator aware of a new piece of floating content, and moves any existing
     * content out of the way, if necessary.
@@ -126,6 +134,13 @@ class FloatingContentCoordinator @Inject constructor() {
     */
    @JvmOverloads
    fun onContentMoved(content: FloatingContent) {

        // Ignore calls when we are currently resolving conflicts, since those calls are from
        // content that is moving to new, conflict-free bounds.
        if (currentlyResolvingConflicts) {
            return
        }

        if (!allContentBounds.containsKey(content)) {
            Log.wtf(TAG, "Received onContentMoved call before onContentAdded! " +
                    "This should never happen.")
@@ -162,6 +177,8 @@ class FloatingContentCoordinator @Inject constructor() {
     * them to move out of the way.
     */
    private fun maybeMoveConflictingContent(fromContent: FloatingContent) {
        currentlyResolvingConflicts = true

        val conflictingNewBounds = allContentBounds[fromContent]!!
        allContentBounds
                // Filter to content that intersects with the new bounds. That's content that needs
@@ -182,6 +199,8 @@ class FloatingContentCoordinator @Inject constructor() {
                                            .minus(conflictingNewBounds)))
                    allContentBounds[content] = content.getFloatingBoundsOnScreen()
                }

        currentlyResolvingConflicts = false
    }

    /**