From c78efeeb5913fa7ed44abaf36982c4f97f487d41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9a=20Saviot?= Date: Tue, 19 Dec 2017 14:49:17 +0100 Subject: [PATCH] [expression_editor] The user can input text. Change-Id: I6456ee23e3caf3a42899d0734e1bef1f53f68b8d --- apps/expression_editor/controller.cpp | 8 +++++++- apps/expression_editor/controller.h | 1 + apps/expression_editor/expression_editor_view.cpp | 1 + .../scrollable_expression_view_with_cursor.cpp | 2 +- 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/apps/expression_editor/controller.cpp b/apps/expression_editor/controller.cpp index 5337e432c..4053ad77c 100644 --- a/apps/expression_editor/controller.cpp +++ b/apps/expression_editor/controller.cpp @@ -4,7 +4,8 @@ namespace ExpressionEditor { Controller::Controller(Responder * parentResponder, Poincare::ExpressionLayout * expressionLayout) : ViewController(parentResponder), - m_view(parentResponder, expressionLayout, &m_cursor) + m_view(parentResponder, expressionLayout, &m_cursor), + m_expressionLayout(expressionLayout) { m_cursor.setPointedExpressionLayout(expressionLayout->editableChild(0)); } @@ -33,6 +34,11 @@ bool Controller::handleEvent(Ion::Events::Event event) { { returnValue = true; } + else if (event.hasText() && m_expressionLayout->insertLayoutForTextAtCursor(event.text(), &m_cursor)) { + returnValue = true; + m_expressionLayout->invalidAllSizesAndPositions(); + m_view.layoutSubviews(); + } m_view.cursorPositionChanged(); return returnValue; } diff --git a/apps/expression_editor/controller.h b/apps/expression_editor/controller.h index f09630034..d827c35d0 100644 --- a/apps/expression_editor/controller.h +++ b/apps/expression_editor/controller.h @@ -19,6 +19,7 @@ public: bool handleEvent(Ion::Events::Event event) override; private: ExpressionEditorView m_view; + Poincare::ExpressionLayout * m_expressionLayout; Poincare::ExpressionLayoutCursor m_cursor; }; diff --git a/apps/expression_editor/expression_editor_view.cpp b/apps/expression_editor/expression_editor_view.cpp index fc13a7f78..5d1047e53 100644 --- a/apps/expression_editor/expression_editor_view.cpp +++ b/apps/expression_editor/expression_editor_view.cpp @@ -20,6 +20,7 @@ void ExpressionEditorView::layoutSubviews() { k_margin, bounds().width() - 2 * k_margin, bounds().height() - 2 * k_margin)); + markRectAsDirty(bounds()); } KDSize ExpressionEditorView::minimalSizeForOptimalDisplay() const { diff --git a/apps/expression_editor/scrollable_expression_view_with_cursor.cpp b/apps/expression_editor/scrollable_expression_view_with_cursor.cpp index b7beb0baf..60b5c1733 100644 --- a/apps/expression_editor/scrollable_expression_view_with_cursor.cpp +++ b/apps/expression_editor/scrollable_expression_view_with_cursor.cpp @@ -14,7 +14,7 @@ KDSize ScrollableExpressionViewWithCursor::minimalSizeForOptimalDisplay() const } void ScrollableExpressionViewWithCursor::scrollToCursor() { - scrollToContentRect(m_expressionViewWithCursor.cursorRect()); + scrollToContentRect(m_expressionViewWithCursor.cursorRect(), true); } }