diff options
author | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2019-10-15 01:00:05 +0200 |
---|---|---|
committer | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2019-10-15 01:00:06 +0200 |
commit | b08809b521591bd17955846fbeee651200983f3b (patch) | |
tree | 9cb30ead810e433b35e4a831325ba8f6e709bce3 /src/quick | |
parent | 8d560d1bf0a747bf62f73fad6b6774095442d9d2 (diff) | |
parent | 6e03533f9432eb1695e3c3bbe65667974b5415b4 (diff) |
Merge remote-tracking branch 'origin/5.13' into 5.14
Change-Id: I7759f6b60f8fda6525b239c7ee2e034194d4ab85
Diffstat (limited to 'src/quick')
-rw-r--r-- | src/quick/items/qquicktextedit.cpp | 9 | ||||
-rw-r--r-- | src/quick/items/qquicktextinput.cpp | 4 |
2 files changed, 6 insertions, 7 deletions
diff --git a/src/quick/items/qquicktextedit.cpp b/src/quick/items/qquicktextedit.cpp index c4e9c0d316..7d34cc3f56 100644 --- a/src/quick/items/qquicktextedit.cpp +++ b/src/quick/items/qquicktextedit.cpp @@ -2060,20 +2060,19 @@ QSGNode *QQuickTextEdit::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData * firstDirtyPos = nodeIterator->startPos(); // ### this could be optimized if the first and last dirty nodes are not connected // as the intermediate text nodes would usually only need to be transformed differently. - int lastDirtyPos = firstDirtyPos; + QQuickTextNode *firstCleanNode = nullptr; auto it = d->textNodeMap.constEnd(); while (it != nodeIterator) { --it; - if (it->dirty()) { - lastDirtyPos = it->startPos(); + if (it->dirty()) break; - } + firstCleanNode = it->textNode(); } do { rootNode->removeChildNode(nodeIterator->textNode()); delete nodeIterator->textNode(); nodeIterator = d->textNodeMap.erase(nodeIterator); - } while (nodeIterator != d->textNodeMap.constEnd() && nodeIterator->startPos() <= lastDirtyPos); + } while (nodeIterator != d->textNodeMap.constEnd() && nodeIterator->textNode() != firstCleanNode); } // FIXME: the text decorations could probably be handled separately (only updated for affected textFrames) diff --git a/src/quick/items/qquicktextinput.cpp b/src/quick/items/qquicktextinput.cpp index 34105d8c81..a83b9beaa5 100644 --- a/src/quick/items/qquicktextinput.cpp +++ b/src/quick/items/qquicktextinput.cpp @@ -2259,8 +2259,8 @@ void QQuickTextInput::remove(int start, int end) d->m_cursor -= qMin(d->m_cursor, end) - start; if (d->m_selstart > start) d->m_selstart -= qMin(d->m_selstart, end) - start; - if (d->m_selend > end) - d->m_selend -= qMin(d->m_selend, end) - start; + if (d->m_selend >= end) + d->m_selend -= end - start; } d->addCommand(QQuickTextInputPrivate::Command( QQuickTextInputPrivate::SetSelection, d->m_cursor, 0, d->m_selstart, d->m_selend)); |