[escher] Clean text_input

This commit is contained in:
Léa Saviot
2019-01-18 10:54:21 +01:00
committed by Émilie Feral
parent 7a1fd68626
commit 07a910b455
2 changed files with 24 additions and 36 deletions

View File

@@ -3,14 +3,6 @@
/* TextInput::ContentView */
TextInput::ContentView::ContentView(const KDFont * font) :
View(),
m_cursorView(),
m_font(font),
m_cursorIndex(0)
{
}
void TextInput::ContentView::setCursorLocation(int location) {
assert(location >= 0);
int adjustedLocation = location > (signed int)editedTextLength() ? (signed int)editedTextLength() : location;
@@ -27,14 +19,6 @@ KDRect TextInput::ContentView::cursorRect() {
return characterFrameAtIndex(m_cursorIndex);
}
int TextInput::ContentView::numberOfSubviews() const {
return 1;
}
View * TextInput::ContentView::subviewAtIndex(int index) {
return &m_cursorView;
}
void TextInput::ContentView::layoutSubviews() {
m_cursorView.setFrame(cursorRect());
}
@@ -43,7 +27,7 @@ KDRect TextInput::ContentView::dirtyRectFromCursorPosition(size_t index, bool li
KDRect charRect = characterFrameAtIndex(index);
KDRect dirtyRect = KDRect(charRect.x(), charRect.y(), bounds().width() - charRect.x(), charRect.height());
if (lineBreak) {
dirtyRect = dirtyRect.unionedWith(KDRect(0, charRect.bottom()+1, bounds().width(), bounds().height()-charRect.bottom()-1));
dirtyRect = dirtyRect.unionedWith(KDRect(0, charRect.bottom()+1, bounds().width(), bounds().height()-charRect.bottom()-1));
}
return dirtyRect;
}
@@ -54,11 +38,6 @@ void TextInput::ContentView::reloadRectFromCursorPosition(size_t index, bool lin
/* TextInput */
TextInput::TextInput(Responder * parentResponder, View * contentView) :
ScrollableView(parentResponder, contentView, this)
{
}
bool TextInput::removeChar() {
contentView()->removeChar();
scrollToCursor();
@@ -66,13 +45,14 @@ bool TextInput::removeChar() {
}
void TextInput::scrollToCursor() {
/* Technically, we do not need to overscroll in text input. However,
* logically, we should layout the scroll view before calling
* scrollToContentRect in case the size of the scroll view has changed and
* then call scrollToContentRect which call another layout of the scroll view
* if the offset has evolved. In order to avoid requiring two layouts, we
* allow overscrolling in scrollToContentRect and the last layout of the
* scroll view corrects the size of the scroll view only once. */
/* Technically, we do not need to overscroll in text input. However, we should
* layout the scroll view before calling scrollToContentRect (in case the size
* of the scroll view has changed) and then call scrollToContentRect which
* calls another layout of the scroll view if the offset has evolved.
*
* In order to avoid requiring two layouts, we allow overscrolling in
* scrollToContentRect, and the last layout of the scroll view corrects the
* size of the scroll view only once. */
scrollToContentRect(contentView()->cursorRect(), true);
}
@@ -87,7 +67,7 @@ bool TextInput::setCursorLocation(int location) {
bool TextInput::insertTextAtLocation(const char * text, int location) {
if (contentView()->insertTextAtLocation(text, location)) {
/* We layout the scrollable view before scrolling to cursor because the
* content size might have changed. */
* content size might have changed. */
layoutSubviews();
scrollToCursor();
return true;