From 25c036a0785cf50b646dabd238728df0d1ed5f32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9a=20Saviot?= Date: Wed, 3 Jan 2018 17:19:02 +0100 Subject: [PATCH] [expression_editor] Set cursor position according to the layout inserted. Change-Id: Iac33efdeb4b725ae6007282d323f446992873832 --- apps/expression_editor/controller.cpp | 3 --- poincare/src/expression_layout_cursor.cpp | 20 ++++++++++++++++---- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/apps/expression_editor/controller.cpp b/apps/expression_editor/controller.cpp index 888192d9f..7c717f585 100644 --- a/apps/expression_editor/controller.cpp +++ b/apps/expression_editor/controller.cpp @@ -63,9 +63,6 @@ bool Controller::privateHandleEvent(Ion::Events::Event event) { } ExpressionLayout * newPointedLayout = handleAddEvent(event); if (newPointedLayout != nullptr) { - m_cursor.setPointedExpressionLayout(newPointedLayout); - m_cursor.setPosition(ExpressionLayoutCursor::Position::Right); - m_cursor.setPositionInside(0); m_expressionLayout->invalidAllSizesPositionsAndBaselines(); m_view.layoutSubviews(); return true; diff --git a/poincare/src/expression_layout_cursor.cpp b/poincare/src/expression_layout_cursor.cpp index 71e6dad4f..f24cc664e 100644 --- a/poincare/src/expression_layout_cursor.cpp +++ b/poincare/src/expression_layout_cursor.cpp @@ -61,6 +61,8 @@ ExpressionLayout * ExpressionLayoutCursor::addEmptyExponentialLayout() { EmptyVisibleLayout * child2 = new EmptyVisibleLayout(); EditableBaselineRelativeLayout * newChild = new EditableBaselineRelativeLayout(child1, child2, BaselineRelativeLayout::Type::Superscript, false); pointedExpressionLayout()->addBrother(this, newChild); + setPointedExpressionLayout(child2); + setPosition(ExpressionLayoutCursor::Position::Left); return child2; } @@ -77,9 +79,11 @@ ExpressionLayout * ExpressionLayoutCursor::addEmptyLogarithmLayout() { EmptyVisibleLayout * child2 = new EmptyVisibleLayout(); EditableBaselineRelativeLayout * newChild = new EditableBaselineRelativeLayout(child1, child2, BaselineRelativeLayout::Type::Subscript, false); m_pointedExpressionLayout->addBrother(this, newChild); - m_pointedExpressionLayout = newChild; - m_position = Position::Right; - return insertText("()"); + setPointedExpressionLayout(newChild); + setPosition(ExpressionLayoutCursor::Position::Right); + insertText("()"); + moveLeft(); + return child1; } ExpressionLayout * ExpressionLayoutCursor::addEmptyPowerLayout() { @@ -87,6 +91,8 @@ ExpressionLayout * ExpressionLayoutCursor::addEmptyPowerLayout() { EmptyVisibleLayout * child2 = new EmptyVisibleLayout(); EditableBaselineRelativeLayout * newChild = new EditableBaselineRelativeLayout(child1, child2, BaselineRelativeLayout::Type::Superscript, false); m_pointedExpressionLayout->addBrother(this, newChild); + setPointedExpressionLayout(child1); + setPosition(ExpressionLayoutCursor::Position::Right); return child1; } @@ -95,6 +101,8 @@ ExpressionLayout * ExpressionLayoutCursor::addEmptyRootLayout() { EmptyVisibleLayout * child2 = new EmptyVisibleLayout(); NthRootLayout * newChild = new NthRootLayout(child1, child2, false); m_pointedExpressionLayout->addBrother(this, newChild); + setPointedExpressionLayout(child1); + setPosition(ExpressionLayoutCursor::Position::Right); return child1; } @@ -103,12 +111,16 @@ ExpressionLayout * ExpressionLayoutCursor::addEmptySquarePowerLayout() { CharLayout * child2 = new CharLayout('2'); EditableBaselineRelativeLayout * newChild = new EditableBaselineRelativeLayout(child1, child2, BaselineRelativeLayout::Type::Superscript, false); m_pointedExpressionLayout->addBrother(this, newChild); - return child1; + setPointedExpressionLayout(newChild); + setPosition(ExpressionLayoutCursor::Position::Right); + return newChild; } ExpressionLayout * ExpressionLayoutCursor::addXNTCharLayout() { CharLayout * newChild = new CharLayout(m_pointedExpressionLayout->XNTChar()); m_pointedExpressionLayout->addBrother(this, newChild); + setPointedExpressionLayout(newChild); + setPosition(ExpressionLayoutCursor::Position::Right); return newChild; }