[escher] TextField: force layout after scroll reload when the content

size of scrollview might have changed
This commit is contained in:
Émilie Feral
2018-02-19 15:42:56 +01:00
committed by EmilieNumworks
parent 4af6e71e21
commit 2b0b40d6d6
5 changed files with 7 additions and 7 deletions

View File

@@ -14,7 +14,7 @@ public:
KDColor indicatorColor = Palette::GreyDark, KDColor backgroundIndicatorColor = Palette::GreyMiddle,
KDCoordinate indicatorMargin = 14);
void setContentOffset(KDPoint offset);
void setContentOffset(KDPoint offset, bool forceRelayout = false);
KDPoint contentOffset() const;
KDCoordinate topMargin() const;
KDCoordinate leftMargin() const;

View File

@@ -8,7 +8,7 @@ class ScrollableView : public Responder, public ScrollView {
public:
ScrollableView(Responder * parentResponder, View * view, ScrollViewDataSource * dataSource);
bool handleEvent(Ion::Events::Event event) override;
void reloadScroll();
void reloadScroll(bool forceRelayout = false);
protected:
void layoutSubviews() override;
KDPoint m_manualScrollingOffset;

View File

@@ -189,8 +189,8 @@ KDSize ScrollView::contentSize() {
return m_contentView->minimalSizeForOptimalDisplay();
}
void ScrollView::setContentOffset(KDPoint offset) {
if (m_dataSource->setOffset(offset)) {
void ScrollView::setContentOffset(KDPoint offset, bool forceRelayout) {
if (m_dataSource->setOffset(offset) || forceRelayout) {
layoutSubviews();
}
}

View File

@@ -43,9 +43,9 @@ bool ScrollableView::handleEvent(Ion::Events::Event event) {
return false;
}
void ScrollableView::reloadScroll() {
void ScrollableView::reloadScroll(bool forceReLayout) {
m_manualScrollingOffset = KDPointZero;
setContentOffset(m_manualScrollingOffset);
setContentOffset(m_manualScrollingOffset, forceReLayout);
}
void ScrollableView::layoutSubviews() {

View File

@@ -312,7 +312,7 @@ bool TextField::privateHandleEvent(Ion::Events::Event event) {
int cursorLoc = cursorLocation();
setEditing(false, m_hasTwoBuffers);
if (m_delegate->textFieldDidFinishEditing(this, text(), event)) {
reloadScroll();
reloadScroll(true);
return true;
}
/* if the text was refused (textFieldDidFinishEditing returned false, we