Include pixel size of font in exported HTML from QTextDocument

When you copy-pasted rich text in which the font size had been set
using setPixelSize() the font size would be mysteriously forgotten.
The pixel size property in QTextCharFormat was added ad hoc, and not
integrated in the HTML exporter.

Task-number: QT-4792
Reviewed-by: Gunnar
(cherry picked from commit 5aa5c2e2935c1829cc6965198968699f17c24ec0)
This commit is contained in:
Eskil Abrahamsen Blomfeldt 2011-05-04 10:52:20 +02:00
parent 99454287bf
commit 2e0003eda4
2 changed files with 34 additions and 0 deletions

View File

@ -2076,6 +2076,10 @@ QString QTextHtmlExporter::toHtml(const QByteArray &encoding, ExportMode mode)
html += QLatin1String(" font-size:"); html += QLatin1String(" font-size:");
html += QString::number(defaultCharFormat.fontPointSize()); html += QString::number(defaultCharFormat.fontPointSize());
html += QLatin1String("pt;"); html += QLatin1String("pt;");
} else if (defaultCharFormat.hasProperty(QTextFormat::FontPixelSize)) {
html += QLatin1String(" font-size:");
html += QString::number(defaultCharFormat.intProperty(QTextFormat::FontPixelSize));
html += QLatin1String("px;");
} }
html += QLatin1String(" font-weight:"); html += QLatin1String(" font-weight:");
@ -2156,6 +2160,10 @@ bool QTextHtmlExporter::emitCharFormatStyle(const QTextCharFormat &format)
html += QLatin1Char(';'); html += QLatin1Char(';');
attributesEmitted = true; attributesEmitted = true;
} }
} else if (format.hasProperty(QTextFormat::FontPixelSize)) {
html += QLatin1String(" font-size:");
html += QString::number(format.intProperty(QTextFormat::FontPixelSize));
html += QLatin1String("px;");
} }
if (format.hasProperty(QTextFormat::FontWeight) if (format.hasProperty(QTextFormat::FontWeight)

View File

@ -180,6 +180,8 @@ private slots:
void escape_data(); void escape_data();
void escape(); void escape();
void copiedFontSize();
private: private:
void backgroundImage_checkExpectedHtml(const QTextDocument &doc); void backgroundImage_checkExpectedHtml(const QTextDocument &doc);
@ -2734,5 +2736,29 @@ void tst_QTextDocument::escape()
QCOMPARE(Qt::escape(original), expected); QCOMPARE(Qt::escape(original), expected);
} }
void tst_QTextDocument::copiedFontSize()
{
QTextDocument documentInput;
QTextDocument documentOutput;
QFont fontInput;
fontInput.setPixelSize(24); // With pixels font size is not transfered in html
QTextCursor cursorInput(&documentInput);
QTextCharFormat formatInput = cursorInput.charFormat();
formatInput.setFont(fontInput);
cursorInput.insertText("Should be the same font", formatInput);
cursorInput.select(QTextCursor::Document);
QTextDocumentFragment fragmentInput(cursorInput);
QString html = fragmentInput.toHtml();
QTextCursor cursorOutput(&documentOutput);
QTextDocumentFragment fragmentOutput = QTextDocumentFragment::fromHtml(html);
cursorOutput.insertFragment(fragmentOutput);
QCOMPARE(cursorOutput.charFormat().font().pixelSize(), 24);
}
QTEST_MAIN(tst_QTextDocument) QTEST_MAIN(tst_QTextDocument)
#include "tst_qtextdocument.moc" #include "tst_qtextdocument.moc"