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

Commit 172476fe authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Refuse to open history if in ANIMATE state." into pi-dev

parents d916fe4c bdfd38cf
Loading
Loading
Loading
Loading
+14 −7
Original line number Diff line number Diff line
@@ -535,9 +535,6 @@ public class Calculator extends Activity
    }

    public boolean isResultLayout() {
        if (mCurrentState == CalculatorState.ANIMATE) {
            throw new AssertionError("impossible state");
        }
        // Note that ERROR has INPUT, not RESULT layout.
        return mCurrentState == CalculatorState.INIT_FOR_RESULT
                || mCurrentState == CalculatorState.RESULT;
@@ -1339,7 +1336,14 @@ public class Calculator extends Activity
     */
    private boolean prepareForHistory() {
        if (mCurrentState == CalculatorState.ANIMATE) {
            throw new AssertionError("onUserInteraction should have ended animation");
            // End the current animation and signal that preparation has failed.
            // onUserInteraction is unreliable and onAnimationEnd() is asynchronous, so we
            // aren't guaranteed to be out of the ANIMATE state by the time prepareForHistory is
            // called.
            if (mCurrentAnimator != null) {
                mCurrentAnimator.end();
            }
            return false;
        } else if (mCurrentState == CalculatorState.EVALUATE) {
            // Cancel current evaluation
            cancelIfEvaluating(true /* quiet */ );
@@ -1366,12 +1370,15 @@ public class Calculator extends Activity
    }

    private void showHistoryFragment() {
        final FragmentManager manager = getFragmentManager();
        if (manager == null || manager.isDestroyed()) {
        if (getHistoryFragment() != null) {
            // If the fragment already exists, do nothing.
            return;
        }

        if (getHistoryFragment() != null || !prepareForHistory()) {
        final FragmentManager manager = getFragmentManager();
        if (manager == null || manager.isDestroyed() || !prepareForHistory()) {
            // If the history fragment can not be shown, close the draglayout.
            mDragLayout.setClosed();
            return;
        }

+8 −9
Original line number Diff line number Diff line
@@ -209,16 +209,13 @@ public class DragLayout extends ViewGroup {
        return mIsOpen;
    }

    private void setClosed() {
        if (mIsOpen) {
    public void setClosed() {
        mIsOpen = false;
        mHistoryFrame.setVisibility(View.INVISIBLE);

        if (mCloseCallback != null) {
            mCloseCallback.onClose();
        }
    }
    }

    public Animator createAnimator(boolean toOpen) {
        if (mIsOpen == toOpen) {
@@ -350,7 +347,9 @@ public class DragLayout extends ViewGroup {
                settleToOpen = releasedChild.getTop() > -(mVerticalRange / 2);
            }

            if (mDragHelper.settleCapturedViewAt(0, settleToOpen ? 0 : -mVerticalRange)) {
            // If the view is not visible, then settle it closed, not open.
            if (mDragHelper.settleCapturedViewAt(0, settleToOpen && mIsOpen ? 0
                    : -mVerticalRange)) {
                ViewCompat.postInvalidateOnAnimation(DragLayout.this);
            }
        }