summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMårten Nordheim <[email protected]>2023-11-09 12:03:51 +0000
committerMårten Nordheim <[email protected]>2023-11-09 18:18:27 +0000
commit96e3d06b6f216fb802acc6dd1a7dca113f782508 (patch)
tree7271a51e3051146545bc5231a37cfd83c5ae6b6a
parentb637607789a9e92a0dd0ff7fb31b9a92a10ef0bf (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 <[email protected]> Reviewed-by: Edward Welbourne <[email protected]>
-rw-r--r--src/gui/text/qtextdocument_p.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/gui/text/qtextdocument_p.cpp b/src/gui/text/qtextdocument_p.cpp
index 0180fbb6ff9..0718300d375 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;