diff --git a/apps/shared/expression_model.h b/apps/shared/expression_model.h index 8482e9f04..d511abe03 100644 --- a/apps/shared/expression_model.h +++ b/apps/shared/expression_model.h @@ -20,6 +20,9 @@ public: Poincare::ExpressionLayout * layout(); virtual bool isDefined(); virtual bool isEmpty(); + virtual bool shouldBeClearedBeforeRemove() { + return !isEmpty(); + } virtual void setContent(const char * c); virtual void tidy(); private: diff --git a/apps/shared/expression_model_list_controller.cpp b/apps/shared/expression_model_list_controller.cpp index b720aca9e..cb09deb82 100644 --- a/apps/shared/expression_model_list_controller.cpp +++ b/apps/shared/expression_model_list_controller.cpp @@ -70,7 +70,7 @@ bool ExpressionModelListController::handleEventOnExpression(Ion::Events::Event e } if (event == Ion::Events::Backspace && !isAddEmptyRow(selectedRow())) { ExpressionModel * model = modelStore()->modelAtIndex(modelIndexForRow(selectedRow())); - if (!model->isEmpty()) { + if (model->shouldBeClearedBeforeRemove()) { reinitExpression(model); } else { if (removeModelRow(model)) { diff --git a/apps/solver/equation.h b/apps/solver/equation.h index e615454cc..3fa925cb0 100644 --- a/apps/solver/equation.h +++ b/apps/solver/equation.h @@ -15,6 +15,9 @@ public: Equation(Equation&& other) = delete; void setContent(const char * c) override; void tidy() override; + bool shouldBeClearedBeforeRemove() override { + return false; + } Poincare::Expression * standardForm(Poincare::Context * context) const; private: mutable Poincare::Expression * m_standardForm;