diff --git a/src/gui/text/qtexthtmlparser.cpp b/src/gui/text/qtexthtmlparser.cpp index 952cebcc1b..5292ba20a2 100644 --- a/src/gui/text/qtexthtmlparser.cpp +++ b/src/gui/text/qtexthtmlparser.cpp @@ -1896,7 +1896,11 @@ QVector QTextHtmlParser::declarationsForNode(int node) const if (nodes.at(node).id == Html_a && nodes.at(node).hasHref) extraPseudo = "link"; decls = selector.declarationsForNode(n, extraPseudo); - + n = selector.parentNode(n); + while (!selector.isNullNode(n)) { + decls = selector.declarationsForNode(n, extraPseudo) + decls; + n = selector.parentNode(n); + } return decls; } diff --git a/tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp b/tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp index 85d4ef7635..10e79065ee 100644 --- a/tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp +++ b/tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp @@ -185,7 +185,7 @@ private slots: void htmlExportImportBlockCount(); void QTBUG27354_spaceAndSoftSpace(); - + void cssInheritance(); private: void backgroundImage_checkExpectedHtml(const QTextDocument &doc); @@ -2925,5 +2925,34 @@ void tst_QTextDocument::QTBUG27354_spaceAndSoftSpace() } } +void tst_QTextDocument::cssInheritance() +{ + { + QTextDocument td; + td.setHtml("" + "

Foo

Bar

Baz

"); + QTextBlock block = td.begin(); + while (block.isValid()) { + QTextBlockFormat fmt = block.blockFormat(); + QVERIFY(fmt.lineHeightType() == QTextBlockFormat::ProportionalHeight); + QVERIFY(fmt.lineHeight() == 200); + block = block.next(); + } + } + { + QTextDocument td; + td.setHtml("" + "

Foo

Bar

Baz

"); + QTextBlock block = td.begin(); + QTextBlockFormat fmt = block.blockFormat(); + QVERIFY(fmt.lineHeightType() == QTextBlockFormat::FixedHeight); + QVERIFY(fmt.lineHeight() == 40); + block = block.next(); + fmt = block.blockFormat(); + QVERIFY(fmt.lineHeightType() == QTextBlockFormat::ProportionalHeight); + QVERIFY(fmt.lineHeight() == 300); + } +} + QTEST_MAIN(tst_QTextDocument) #include "tst_qtextdocument.moc"