From 2e2f1e2af76d94a41f382e81ab8a6fdccf8ca579 Mon Sep 17 00:00:00 2001 From: Ralf Habacker Date: Wed, 17 Nov 2021 13:54:32 +0100 Subject: Add css media rule support for QTextDocument::setHtml() CSS styles can contain '@media {...}' blocks, which were previously ignored for all values except "screen". To use a media rule other than the default "screen" rule, specify it before calling setHtml() with setMetaInformation() and the new info value 'CssMedia'. [ChangeLog][Gui][QTextDocument] Add css media rule support for QTextDocument::setHtml() Pick-to: 6.3 Fixes: QTBUG-98408 Change-Id: Ie05f815a6dedbd970210f467e26b116f6ee3b9ca Reviewed-by: Shawn Rutledge --- .../gui/text/qtextdocument/tst_qtextdocument.cpp | 38 ++++++++++++++++++++++ 1 file changed, 38 insertions(+) (limited to 'tests/auto/gui/text') diff --git a/tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp b/tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp index 922226a3a3..a38defa656 100644 --- a/tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp +++ b/tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp @@ -96,6 +96,7 @@ private slots: void toHtml2(); void setFragmentMarkersInHtmlExport(); + void setMediaRule(); void toHtmlBodyBgColor(); void toHtmlBodyBgColorRgba(); @@ -1910,6 +1911,39 @@ void tst_QTextDocument::setFragmentMarkersInHtmlExport() } } +void tst_QTextDocument::setMediaRule() +{ + { + CREATE_DOC_AND_CURSOR(); + doc.setDefaultStyleSheet("@media screen { p { background:#000000 } } @media print { p { background:#ffffff } }"); + doc.setHtml("

Hello World

"); + + QString expected = htmlHead; + expected += QString("

Hello World

") + htmlTail; + QCOMPARE(doc.toHtml(), expected); + } + { + CREATE_DOC_AND_CURSOR(); + doc.setDefaultStyleSheet("@media screen { p { background:#000000 } } @media print { p { background:#ffffff } }"); + doc.setMetaInformation(QTextDocument::CssMedia, "screen"); + doc.setHtml("

Hello World

"); + + QString expected = htmlHead; + expected += QString("

Hello World

") + htmlTail; + QCOMPARE(doc.toHtml(), expected); + } + { + CREATE_DOC_AND_CURSOR(); + doc.setDefaultStyleSheet("@media screen { p { background:#000000 } } @media print { p { background:#ffffff } }"); + doc.setMetaInformation(QTextDocument::CssMedia, "print"); + doc.setHtml("

Hello World

"); + + QString expected = htmlHead; + expected += QString("

Hello World

") + htmlTail; + QCOMPARE(doc.toHtml(), expected); + } +} + void tst_QTextDocument::toHtmlBodyBgColor() { CREATE_DOC_AND_CURSOR(); @@ -2294,14 +2328,18 @@ void tst_QTextDocument::clonePreservesMetaInformation() { const QString title("Foobar"); const QString url("about:blank"); + const QString media("print"); doc->setHtml("" + title + "Hrm"); doc->setMetaInformation(QTextDocument::DocumentUrl, url); + doc->setMetaInformation(QTextDocument::CssMedia, media); QCOMPARE(doc->metaInformation(QTextDocument::DocumentTitle), title); QCOMPARE(doc->metaInformation(QTextDocument::DocumentUrl), url); + QCOMPARE(doc->metaInformation(QTextDocument::CssMedia), media); QTextDocument *clone = doc->clone(); QCOMPARE(clone->metaInformation(QTextDocument::DocumentTitle), title); QCOMPARE(clone->metaInformation(QTextDocument::DocumentUrl), url); + QCOMPARE(clone->metaInformation(QTextDocument::CssMedia), media); delete clone; } -- cgit v1.2.3