diff options
author | Anton Kudryavtsev <anton.kudryavtsev@vk.team> | 2023-10-09 14:25:28 +0300 |
---|---|---|
committer | Anton Kudryavtsev <anton.kudryavtsev@vk.team> | 2023-10-12 00:44:56 +0300 |
commit | a83a818791bc88725e07ea41b7c5fa50828e6b24 (patch) | |
tree | 1459958c47109a76637b0c4c7b8e55069ccac9f0 /src/gui/text/qtextdocument_p.cpp | |
parent | 0f0371c8304bd7354a3c43f9fac6b85bd3e9a3f1 (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.cpp | 12 |
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; |