diff options
-rw-r--r-- | src/gui/text/qtextdocumentfragment.cpp | 32 | ||||
-rw-r--r-- | src/gui/text/qtextdocumentfragment.h | 1 | ||||
-rw-r--r-- | tests/auto/gui/text/qtextdocumentfragment/tst_qtextdocumentfragment.cpp | 9 |
3 files changed, 36 insertions, 6 deletions
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 diff --git a/tests/auto/gui/text/qtextdocumentfragment/tst_qtextdocumentfragment.cpp b/tests/auto/gui/text/qtextdocumentfragment/tst_qtextdocumentfragment.cpp index 24704bec37..eaa29ca5f3 100644 --- a/tests/auto/gui/text/qtextdocumentfragment/tst_qtextdocumentfragment.cpp +++ b/tests/auto/gui/text/qtextdocumentfragment/tst_qtextdocumentfragment.cpp @@ -100,6 +100,7 @@ private slots: void inheritAlignment(); void dontEmitEmptyNodeWhenEmptyTagIsFollowedByCloseTag(); void toPlainText(); + void toRawText(); void copyTableRow(); void copyTableColumn(); void copySubTable(); @@ -1094,6 +1095,14 @@ void tst_QTextDocumentFragment::toPlainText() QCOMPARE(doc->blockCount(), 3); } +void tst_QTextDocumentFragment::toRawText() +{ + // Make sure nbsp, line separator, paragraph separator is preserved + doc->setPlainText("Hello\u0A00\u2028\u2029World"); + + QCOMPARE(QTextDocumentFragment(doc).toRawText(), "Hello\u0A00\u2028\u2029World"); +} + void tst_QTextDocumentFragment::copyTableRow() { QTextDocumentFragment frag; |