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

Commit 1540da46 authored by Adrian Roos's avatar Adrian Roos
Browse files

Fix issues with TrustDrawable

Ensures that the drawable is invalidated whenever the state changes.
Also moves the mAnimating check such that we never update state when
the animation is stopped.

Bug: 17915865
Change-Id: I299597e08d4bac9a5551686cd5d987138e4b3c47
parent f55cdab4
Loading
Loading
Loading
Loading
+10 −7
Original line number Diff line number Diff line
@@ -133,6 +133,7 @@ public class TrustDrawable extends Drawable {
        if (!mAnimating) {
            mAnimating = true;
            updateState(true);
            invalidateSelf();
        }
    }

@@ -146,18 +147,21 @@ public class TrustDrawable extends Drawable {
            mState = STATE_UNSET;
            mCurAlpha = 0;
            mCurInnerRadius = mInnerRadiusEnter;
            invalidateSelf();
        }
    }

    public void setTrustManaged(boolean trustManaged) {
        if (trustManaged == mTrustManaged && mState != STATE_UNSET) return;
        mTrustManaged = trustManaged;
        if (mAnimating) {
        updateState(true);
    }

    private void updateState(boolean allowTransientState) {
        if (!mAnimating) {
            return;
        }

    private void updateState(boolean animate) {
        int nextState = mState;
        if (mState == STATE_UNSET) {
            nextState = mTrustManaged ? STATE_ENTERING : STATE_GONE;
@@ -170,7 +174,7 @@ public class TrustDrawable extends Drawable {
        } else if (mState == STATE_EXITING) {
            if (mTrustManaged) nextState = STATE_ENTERING;
        }
        if (!animate) {
        if (!allowTransientState) {
            if (nextState == STATE_ENTERING) nextState = STATE_VISIBLE;
            if (nextState == STATE_EXITING) nextState = STATE_GONE;
        }
@@ -200,9 +204,8 @@ public class TrustDrawable extends Drawable {
            mState = nextState;
            if (mCurAnimator != null) {
                mCurAnimator.start();
            } else {
                invalidateSelf();
            }
            invalidateSelf();
        }
    }