diff options
author | Mårten Nordheim <marten.nordheim@qt.io> | 2023-11-09 12:03:51 +0000 |
---|---|---|
committer | Mårten Nordheim <marten.nordheim@qt.io> | 2023-11-09 18:18:27 +0000 |
commit | 96e3d06b6f216fb802acc6dd1a7dca113f782508 (patch) | |
tree | 7271a51e3051146545bc5231a37cfd83c5ae6b6a /src/gui/text/qtextdocument_p.cpp | |
parent | b637607789a9e92a0dd0ff7fb31b9a92a10ef0bf (diff) |
Revert "QTextDocumentPrivate::plainText: simplify code"
This reverts commit a83a818791bc88725e07ea41b7c5fa50828e6b24.
Reason for revert: It's causing asserts, solution to fix is unclear
Change-Id: I33ef760a9402c096d3d7487e777c3ccdbb626d39
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
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, 8 insertions, 4 deletions
diff --git a/src/gui/text/qtextdocument_p.cpp b/src/gui/text/qtextdocument_p.cpp index 0180fbb6ff..0718300d37 100644 --- a/src/gui/text/qtextdocument_p.cpp +++ b/src/gui/text/qtextdocument_p.cpp @@ -1305,10 +1305,14 @@ void QTextDocumentPrivate::adjustDocumentChangesAndCursors(int from, int addedOr QString QTextDocumentPrivate::plainText() const { QString result; - result.reserve(length()); - const auto view = QStringView(text); - for (auto f : *this) - result += view.sliced(f->stringPosition, f->size_array[0]); + 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]; + } // remove trailing block separator result.chop(1); return result; |