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

Commit 31b3d88a authored by Robert Snoeberger's avatar Robert Snoeberger Committed by Android (Google) Code Review
Browse files

Merge "Remove OnPreDrawListener when detached from window"

parents b9d481bd d4a5a208
Loading
Loading
Loading
Loading
+14 −1
Original line number Diff line number Diff line
@@ -46,6 +46,7 @@ class TransitionLayout @JvmOverloads constructor(
    private var measureAsConstraint: Boolean = false
    private var currentState: TransitionViewState = TransitionViewState()
    private var updateScheduled = false
    private var isPreDrawApplicatorRegistered = false

    private var desiredMeasureWidth = 0
    private var desiredMeasureHeight = 0
@@ -74,6 +75,7 @@ class TransitionLayout @JvmOverloads constructor(
        override fun onPreDraw(): Boolean {
            updateScheduled = false
            viewTreeObserver.removeOnPreDrawListener(this)
            isPreDrawApplicatorRegistered = false
            applyCurrentState()
            return true
        }
@@ -94,6 +96,14 @@ class TransitionLayout @JvmOverloads constructor(
        }
    }

    override fun onDetachedFromWindow() {
        super.onDetachedFromWindow()
        if (isPreDrawApplicatorRegistered) {
            viewTreeObserver.removeOnPreDrawListener(preDrawApplicator)
            isPreDrawApplicatorRegistered = false
        }
    }

    /**
     * Apply the current state to the view and its widgets
     */
@@ -158,7 +168,10 @@ class TransitionLayout @JvmOverloads constructor(
    private fun applyCurrentStateOnPredraw() {
        if (!updateScheduled) {
            updateScheduled = true
            if (!isPreDrawApplicatorRegistered) {
                viewTreeObserver.addOnPreDrawListener(preDrawApplicator)
                isPreDrawApplicatorRegistered = true
            }
        }
    }