From d436e06a73d443b27242e1f0fd98f40a38afc92e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9a=20Saviot?= Date: Fri, 20 Apr 2018 18:03:08 +0200 Subject: [PATCH] [escher] ~InputViewController and rule of 5 Change-Id: Iec7a3f005df01c59162c8898e136d94f7e69c236 --- escher/include/escher/input_view_controller.h | 9 +++++++-- escher/src/input_view_controller.cpp | 6 ++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/escher/include/escher/input_view_controller.h b/escher/include/escher/input_view_controller.h index aac58e3bc..59c9a7366 100644 --- a/escher/include/escher/input_view_controller.h +++ b/escher/include/escher/input_view_controller.h @@ -37,14 +37,19 @@ private: class ExpressionFieldController : public ViewController { public: ExpressionFieldController(Responder * parentResponder, TextFieldDelegate * textFieldDelegate, ExpressionLayoutFieldDelegate * expressionLayoutFieldDelegate); + ~ExpressionFieldController(); + ExpressionFieldController(const ExpressionFieldController& other) = delete; + ExpressionFieldController(ExpressionFieldController&& other) = delete; + ExpressionFieldController& operator=(const ExpressionFieldController& other) = delete; + ExpressionFieldController& operator=(ExpressionFieldController&& other) = delete; void didBecomeFirstResponder() override; View * view() override { return &m_expressionField; } ExpressionField * expressionField() { return &m_expressionField; } private: static constexpr int k_bufferLength = TextField::maxBufferSize(); - ExpressionField m_expressionField; - char m_textBuffer[k_bufferLength]; Poincare::ExpressionLayout * m_layout; + char m_textBuffer[k_bufferLength]; + ExpressionField m_expressionField; }; bool inputViewDidFinishEditing(); bool inputViewDidAbortEditing(); diff --git a/escher/src/input_view_controller.cpp b/escher/src/input_view_controller.cpp index 9ee810632..4d0fdff73 100644 --- a/escher/src/input_view_controller.cpp +++ b/escher/src/input_view_controller.cpp @@ -6,8 +6,14 @@ InputViewController::ExpressionFieldController::ExpressionFieldController(Responder * parentResponder, TextFieldDelegate * textFieldDelegate, ExpressionLayoutFieldDelegate * expressionLayoutFieldDelegate) : ViewController(parentResponder), + m_layout(new Poincare::HorizontalLayout()), m_expressionField(this, m_textBuffer, k_bufferLength, m_layout, textFieldDelegate, expressionLayoutFieldDelegate) { + m_textBuffer[0] = 0; +} + +InputViewController::ExpressionFieldController::~ExpressionFieldController() { + delete m_layout; } void InputViewController::ExpressionFieldController::didBecomeFirstResponder() {