From 93c1f481abb43c33c53fca703a83a19d208b68df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kai=20K=C3=B6hne?= Date: Wed, 5 Jan 2022 08:29:21 +0100 Subject: Add QTextDocumentFragment::toRawText() Like QTextDocument::toRawText(), QTextDocumentFragment::toRawText() does allow access to the raw string without normalizing nbsp, line separator, paragraph separator unicode characters. [ChangeLog][QtGui][Text] Added QTextDocumentFragment::toRawText() function. Task-number: QTBUG-99572 Change-Id: Ia74150a3870ea0e6326fdcda4d9d0410019124ae Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/gui/text/qtextdocumentfragment.cpp | 32 ++++++++++++++++++++++++++------ src/gui/text/qtextdocumentfragment.h | 1 + 2 files changed, 27 insertions(+), 6 deletions(-) (limited to 'src/gui') diff --git a/src/gui/text/qtextdocumentfragment.cpp b/src/gui/text/qtextdocumentfragment.cpp index 24f2198d4e..f263e96154 100644 --- a/src/gui/text/qtextdocumentfragment.cpp +++ b/src/gui/text/qtextdocumentfragment.cpp @@ -266,12 +266,11 @@ void QTextDocumentFragmentPrivate::insert(QTextCursor &_cursor) const document fragment. Document fragments can also be created by the static functions, fromPlainText() and fromHtml(). - The contents of a document fragment can be obtained as plain text - by using the toPlainText() function, or it can be obtained as HTML + The contents of a document fragment can be obtained as raw text + by using the toRawText() function, or it can be obtained as HTML with toHtml(). */ - /*! Constructs an empty QTextDocumentFragment. @@ -358,10 +357,16 @@ bool QTextDocumentFragment::isEmpty() const } /*! - Returns the document fragment's text as plain text (i.e. with no - formatting information). + This function returns the same as toRawText(), but will replace + some unicode characters with ASCII alternatives. + In particular, no-break space (U+00A0) is replaced by a regular + space (U+0020), and both paragraph (U+2029) and line (U+2028) + separators are replaced by line feed (U+000A). + If you need the precise contents of the document, use toRawText() + instead. - \sa toHtml() + + \sa toHtml(), toRawText() */ QString QTextDocumentFragment::toPlainText() const { @@ -371,6 +376,21 @@ QString QTextDocumentFragment::toPlainText() const return d->doc->toPlainText(); } +/*! + Returns the document fragment's text as raw text (i.e. with no + formatting information). + + \since 6.4 + \sa toHtml(), toPlainText() +*/ +QString QTextDocumentFragment::toRawText() const +{ + if (!d) + return QString(); + + return d->doc->toRawText(); +} + #ifndef QT_NO_TEXTHTMLPARSER /*! diff --git a/src/gui/text/qtextdocumentfragment.h b/src/gui/text/qtextdocumentfragment.h index 2283b06c6c..37d7006ae6 100644 --- a/src/gui/text/qtextdocumentfragment.h +++ b/src/gui/text/qtextdocumentfragment.h @@ -64,6 +64,7 @@ public: bool isEmpty() const; QString toPlainText() const; + QString toRawText() const; #ifndef QT_NO_TEXTHTMLPARSER QString toHtml() const; #endif // QT_NO_TEXTHTMLPARSER -- cgit v1.2.3