mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-03-28 01:59:59 +01:00
[escher] Clean text_input
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user