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 Original line Diff line number Diff line
@@ -46,6 +46,7 @@ class TransitionLayout @JvmOverloads constructor(
    private var measureAsConstraint: Boolean = false
    private var measureAsConstraint: Boolean = false
    private var currentState: TransitionViewState = TransitionViewState()
    private var currentState: TransitionViewState = TransitionViewState()
    private var updateScheduled = false
    private var updateScheduled = false
    private var isPreDrawApplicatorRegistered = false


    private var desiredMeasureWidth = 0
    private var desiredMeasureWidth = 0
    private var desiredMeasureHeight = 0
    private var desiredMeasureHeight = 0
@@ -74,6 +75,7 @@ class TransitionLayout @JvmOverloads constructor(
        override fun onPreDraw(): Boolean {
        override fun onPreDraw(): Boolean {
            updateScheduled = false
            updateScheduled = false
            viewTreeObserver.removeOnPreDrawListener(this)
            viewTreeObserver.removeOnPreDrawListener(this)
            isPreDrawApplicatorRegistered = false
            applyCurrentState()
            applyCurrentState()
            return true
            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
     * Apply the current state to the view and its widgets
     */
     */
@@ -158,7 +168,10 @@ class TransitionLayout @JvmOverloads constructor(
    private fun applyCurrentStateOnPredraw() {
    private fun applyCurrentStateOnPredraw() {
        if (!updateScheduled) {
        if (!updateScheduled) {
            updateScheduled = true
            updateScheduled = true
            if (!isPreDrawApplicatorRegistered) {
                viewTreeObserver.addOnPreDrawListener(preDrawApplicator)
                viewTreeObserver.addOnPreDrawListener(preDrawApplicator)
                isPreDrawApplicatorRegistered = true
            }
        }
        }
    }
    }