[escher] ELField size should take into account the cursor.

Else, when it is on the extrema, it does not appear.

Change-Id: I2a8620ef38773e51d2087f842ec2dade2d8e0bac
This commit is contained in:
Léa Saviot
2018-04-30 17:50:17 +02:00
parent bc40c21f68
commit c8a95b6acd
3 changed files with 6 additions and 3 deletions

View File

@@ -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);
}

View File

@@ -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()));
}

View File

@@ -9,6 +9,8 @@ class ExpressionLayout;
class ExpressionLayoutCursor {
public:
constexpr static KDCoordinate k_cursorWidth = 1;
enum class Position {
Left,
Right