Snapshot display empty state once on creation of HistoryFragment.
Bug: 34698125
Test: Pasting while dragging history down no longer causes crashes.
Remove EvaluatorStateUtils since we now only check the display state once.
Change-Id: I22d0f3f0c967abcd8a8f70dd4cc157247bea8bed
diff --git a/src/com/android/calculator2/DragController.java b/src/com/android/calculator2/DragController.java
index 8810e7d..1716cc9 100644
--- a/src/com/android/calculator2/DragController.java
+++ b/src/com/android/calculator2/DragController.java
@@ -57,6 +57,7 @@
private boolean mAnimationInitialized;
private boolean mOneLine;
+ private boolean mIsDisplayEmpty;
private AnimationController mAnimationController;
@@ -66,9 +67,10 @@
mEvaluator = evaluator;
}
- public void initializeController(boolean isResult, boolean oneLine) {
+ public void initializeController(boolean isResult, boolean oneLine, boolean isDisplayEmpty) {
mOneLine = oneLine;
- if (EvaluatorStateUtils.isDisplayEmpty(mEvaluator)) {
+ mIsDisplayEmpty = isDisplayEmpty;
+ if (mIsDisplayEmpty) {
// Empty display
mAnimationController = new EmptyAnimationController();
} else if (isResult) {
@@ -107,7 +109,8 @@
if (yFraction > 0 && vh != null) {
recyclerView.setVisibility(View.VISIBLE);
}
- if (vh != null && !EvaluatorStateUtils.isDisplayEmpty(mEvaluator)) {
+ if (vh != null && !mIsDisplayEmpty
+ && vh.getItemViewType() == HistoryAdapter.HISTORY_VIEW_TYPE) {
final AlignedTextView formula = vh.getFormula();
final CalculatorResult result = vh.getResult();
final TextView date = vh.getDate();
@@ -157,7 +160,7 @@
date.setTranslationY(mAnimationController.getDateTranslationY(yFraction));
divider.setTranslationY(mAnimationController.getDateTranslationY(yFraction));
- } else if (EvaluatorStateUtils.isDisplayEmpty(mEvaluator)) {
+ } else if (mIsDisplayEmpty) {
// There is no current expression but we still need to collect information
// to translate the other viewholders.
if (!mAnimationInitialized) {
@@ -186,9 +189,9 @@
/**
* Reset all initialized values.
*/
- public void initializeAnimation(boolean isResult, boolean oneLine) {
+ public void initializeAnimation(boolean isResult, boolean oneLine, boolean isDisplayEmpty) {
mAnimationInitialized = false;
- initializeController(isResult, oneLine);
+ initializeController(isResult, oneLine, isDisplayEmpty);
}
public interface AnimateTextInterface {