From ce81481922b325d578be5f558843a151bcb31735 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9a=20Saviot?= Date: Wed, 25 Apr 2018 18:08:35 +0200 Subject: [PATCH] [apps/calculation] Do not reload if the ELView is already maximal Change-Id: Id21cc71de7d5d83a30c6b7beea3c71108bed7197 --- apps/calculation/edit_expression_controller.cpp | 10 +++++++++- apps/calculation/edit_expression_controller.h | 1 + 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/apps/calculation/edit_expression_controller.cpp b/apps/calculation/edit_expression_controller.cpp index 53c857809..e3bf905c8 100644 --- a/apps/calculation/edit_expression_controller.cpp +++ b/apps/calculation/edit_expression_controller.cpp @@ -110,7 +110,15 @@ bool EditExpressionController::expressionLayoutFieldDidAbortEditing(::Expression } void EditExpressionController::expressionLayoutFieldDidChangeSize(::ExpressionLayoutField * expressionLayoutField) { - reloadView(); + /* Reload the view only if the ExpressionField height actually changes, i.e. + * not if the height is already maximal and stays maximal. */ + if (view()) { + bool newInputViewHeightIsMaximal = static_cast(view())->expressionField()->heightIsMaximal(); + if (!m_inputViewHeightIsMaximal || !newInputViewHeightIsMaximal) { + m_inputViewHeightIsMaximal = newInputViewHeightIsMaximal; + reloadView(); + } + } } TextFieldDelegateApp * EditExpressionController::textFieldDelegateApp() { diff --git a/apps/calculation/edit_expression_controller.h b/apps/calculation/edit_expression_controller.h index e6aed04f5..1ad0b1c52 100644 --- a/apps/calculation/edit_expression_controller.h +++ b/apps/calculation/edit_expression_controller.h @@ -67,6 +67,7 @@ private: char m_cacheBuffer[TextField::maxBufferSize()]; HistoryController * m_historyController; CalculationStore * m_calculationStore; + bool m_inputViewHeightIsMaximal; }; }