summaryrefslogtreecommitdiffstats
path: root/src/com/android/calculator2/HistoryFragment.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/calculator2/HistoryFragment.java')
-rw-r--r--src/com/android/calculator2/HistoryFragment.java21
1 files changed, 15 insertions, 6 deletions
diff --git a/src/com/android/calculator2/HistoryFragment.java b/src/com/android/calculator2/HistoryFragment.java
index 7da375d..6847cc9 100644
--- a/src/com/android/calculator2/HistoryFragment.java
+++ b/src/com/android/calculator2/HistoryFragment.java
@@ -47,6 +47,8 @@ public class HistoryFragment extends Fragment implements DragLayout.DragCallback
private ArrayList<HistoryItem> mDataSet = new ArrayList<>();
+ private boolean mIsDisplayEmpty;
+
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -113,13 +115,19 @@ public class HistoryFragment extends Fragment implements DragLayout.DragCallback
final boolean isResultLayout = activity.isResultLayout();
final boolean isOneLine = activity.isOneLine();
- initializeController(isResultLayout, isOneLine);
+ // Snapshot display state here. For the rest of the lifecycle of this current
+ // HistoryFragment, this is what we will consider the display state.
+ // In rare cases, the display state can change after our adapter is initialized.
+ final CalculatorExpr mainExpr = mEvaluator.getExpr(Evaluator.MAIN_INDEX);
+ mIsDisplayEmpty = mainExpr == null || mainExpr.isEmpty();
+
+ initializeController(isResultLayout, isOneLine, mIsDisplayEmpty);
final long maxIndex = mEvaluator.getMaxIndex();
final ArrayList<HistoryItem> newDataSet = new ArrayList<>();
- if (!EvaluatorStateUtils.isDisplayEmpty(mEvaluator) && !isResultLayout) {
+ if (!mIsDisplayEmpty && !isResultLayout) {
// Add the current expression as the first element in the list (the layout is
// reversed and we want the current expression to be the last one in the
// RecyclerView).
@@ -142,7 +150,7 @@ public class HistoryFragment extends Fragment implements DragLayout.DragCallback
mAdapter.setDataSet(mDataSet);
mAdapter.setIsResultLayout(isResultLayout);
mAdapter.setIsOneLine(activity.isOneLine());
-
+ mAdapter.setIsDisplayEmpty(mIsDisplayEmpty);
mAdapter.notifyDataSetChanged();
}
@@ -151,7 +159,8 @@ public class HistoryFragment extends Fragment implements DragLayout.DragCallback
super.onStart();
final Calculator activity = (Calculator) getActivity();
- mDragController.initializeAnimation(activity.isResultLayout(), activity.isOneLine());
+ mDragController.initializeAnimation(activity.isResultLayout(), activity.isOneLine(),
+ mIsDisplayEmpty);
}
@Override
@@ -181,14 +190,14 @@ public class HistoryFragment extends Fragment implements DragLayout.DragCallback
}
}
- private void initializeController(boolean isResult, boolean isOneLine) {
+ private void initializeController(boolean isResult, boolean isOneLine, boolean isDisplayEmpty) {
mDragController.setDisplayFormula(
(CalculatorFormula) getActivity().findViewById(R.id.formula));
mDragController.setDisplayResult(
(CalculatorResult) getActivity().findViewById(R.id.result));
mDragController.setToolbar(getActivity().findViewById(R.id.toolbar));
mDragController.setEvaluator(mEvaluator);
- mDragController.initializeController(isResult, isOneLine);
+ mDragController.initializeController(isResult, isOneLine, isDisplayEmpty);
}
public boolean stopActionModeOrContextMenu() {