summaryrefslogtreecommitdiffstats
path: root/src/gui/text/qtextdocument_p.cpp
diff options
context:
space:
mode:
authorAnton Kudryavtsev <anton.kudryavtsev@vk.team>2023-10-09 14:25:28 +0300
committerAnton Kudryavtsev <anton.kudryavtsev@vk.team>2023-10-12 00:44:56 +0300
commita83a818791bc88725e07ea41b7c5fa50828e6b24 (patch)
tree1459958c47109a76637b0c4c7b8e55069ccac9f0 /src/gui/text/qtextdocument_p.cpp
parent0f0371c8304bd7354a3c43f9fac6b85bd3e9a3f1 (diff)
QTextDocumentPrivate::plainText: simplify code
Use QSV more to avoid manual memcpy Also port loop to range-based for Change-Id: I06f4b424853a4b3ee245c66ccc650d87740e2cb8 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Diffstat (limited to 'src/gui/text/qtextdocument_p.cpp')
-rw-r--r--src/gui/text/qtextdocument_p.cpp12
1 files changed, 4 insertions, 8 deletions
diff --git a/src/gui/text/qtextdocument_p.cpp b/src/gui/text/qtextdocument_p.cpp
index 0718300d37..0180fbb6ff 100644
--- a/src/gui/text/qtextdocument_p.cpp
+++ b/src/gui/text/qtextdocument_p.cpp
@@ -1305,14 +1305,10 @@ void QTextDocumentPrivate::adjustDocumentChangesAndCursors(int from, int addedOr
QString QTextDocumentPrivate::plainText() const
{
QString result;
- result.resize(length());
- const QChar *text_unicode = text.unicode();
- QChar *data = result.data();
- for (QTextDocumentPrivate::FragmentIterator it = begin(); it != end(); ++it) {
- const QTextFragmentData *f = *it;
- ::memcpy(data, text_unicode + f->stringPosition, f->size_array[0] * sizeof(QChar));
- data += f->size_array[0];
- }
+ result.reserve(length());
+ const auto view = QStringView(text);
+ for (auto f : *this)
+ result += view.sliced(f->stringPosition, f->size_array[0]);
// remove trailing block separator
result.chop(1);
return result;