From c8a95b6acd917099fcd8bd817a98b60f3df195d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9a=20Saviot?= Date: Mon, 30 Apr 2018 17:50:17 +0200 Subject: [PATCH] [escher] ELField size should take into account the cursor. Else, when it is on the extrema, it does not appear. Change-Id: I2a8620ef38773e51d2087f842ec2dade2d8e0bac --- escher/src/expression_layout_field.cpp | 2 +- escher/src/expression_layout_field_content_view.cpp | 5 +++-- poincare/include/poincare/expression_layout_cursor.h | 2 ++ 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/escher/src/expression_layout_field.cpp b/escher/src/expression_layout_field.cpp index f1699d877..ed6573fb3 100644 --- a/escher/src/expression_layout_field.cpp +++ b/escher/src/expression_layout_field.cpp @@ -36,7 +36,7 @@ void ExpressionLayoutField::scrollToCursor() { KDCoordinate underBaseline = m_contentView.cursorRect().height() - cursorBaseline; KDCoordinate minAroundBaseline = min(cursorBaseline, underBaseline); minAroundBaseline = min(minAroundBaseline, bounds().height() / 2); - KDRect balancedRect(0, m_contentView.cursorRect().y() + cursorBaseline - minAroundBaseline, 1, 2 * minAroundBaseline); + KDRect balancedRect(0, m_contentView.cursorRect().y() + cursorBaseline - minAroundBaseline, Poincare::ExpressionLayoutCursor::k_cursorWidth, 2 * minAroundBaseline); scrollToContentRect(balancedRect, true); } diff --git a/escher/src/expression_layout_field_content_view.cpp b/escher/src/expression_layout_field_content_view.cpp index 447f0aee3..f8a76b53b 100644 --- a/escher/src/expression_layout_field_content_view.cpp +++ b/escher/src/expression_layout_field_content_view.cpp @@ -32,7 +32,8 @@ void ExpressionLayoutField::ContentView::clearLayout() { } KDSize ExpressionLayoutField::ContentView::minimalSizeForOptimalDisplay() const { - return m_expressionView.minimalSizeForOptimalDisplay(); + KDSize evSize = m_expressionView.minimalSizeForOptimalDisplay(); + return KDSize(evSize.width(), evSize.height() + ExpressionLayoutCursor::k_cursorWidth); } View * ExpressionLayoutField::ContentView::subviewAtIndex(int index) { @@ -65,5 +66,5 @@ void ExpressionLayoutField::ContentView::layoutCursorSubview() { cursorX += pointedLayout->size().width(); } KDPoint cursorTopLeftPosition(cursorX, expressionViewOrigin.y() + cursoredExpressionViewOrigin.y() + pointedLayout->baseline() - m_cursor.baseline()); - m_cursorView.setFrame(KDRect(cursorTopLeftPosition, 1, m_cursor.cursorHeight())); + m_cursorView.setFrame(KDRect(cursorTopLeftPosition, ExpressionLayoutCursor::k_cursorWidth, m_cursor.cursorHeight())); } diff --git a/poincare/include/poincare/expression_layout_cursor.h b/poincare/include/poincare/expression_layout_cursor.h index 77115212f..902062e68 100644 --- a/poincare/include/poincare/expression_layout_cursor.h +++ b/poincare/include/poincare/expression_layout_cursor.h @@ -9,6 +9,8 @@ class ExpressionLayout; class ExpressionLayoutCursor { public: + constexpr static KDCoordinate k_cursorWidth = 1; + enum class Position { Left, Right