From e737ea6dbc0430075d30ad995d402437c7231da1 Mon Sep 17 00:00:00 2001 From: Andy Shaw Date: Thu, 18 Oct 2012 15:34:26 +0200 Subject: Use the right properties when checking the frame's margins Changed it to check the Frame*Margin property instead of the Block*Margin property as this was incorrect for a QTextFrameFormat. Task-number: QTBUG-22173 Change-Id: I2c3066165fb592ed034874b1180593822859f933 Reviewed-by: Simon Hausmann (cherry picked from qtbase/d060620e6cd3c94e7e0ff809b21593b9c0da0be2) --- src/gui/text/qtextodfwriter.cpp | 8 ++++---- tests/auto/qtextodfwriter/tst_qtextodfwriter.cpp | 19 +++++++++++++++++++ 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/gui/text/qtextodfwriter.cpp b/src/gui/text/qtextodfwriter.cpp index d1d42e8..efeb98f 100644 --- a/src/gui/text/qtextodfwriter.cpp +++ b/src/gui/text/qtextodfwriter.cpp @@ -669,13 +669,13 @@ void QTextOdfWriter::writeFrameFormat(QXmlStreamWriter &writer, QTextFrameFormat writer.writeAttribute(styleNS, QString::fromLatin1("name"), QString::fromLatin1("s%1").arg(formatIndex)); writer.writeAttribute(styleNS, QString::fromLatin1("family"), QString::fromLatin1("section")); writer.writeEmptyElement(styleNS, QString::fromLatin1("section-properties")); - if (format.hasProperty(QTextFormat::BlockTopMargin)) + if (format.hasProperty(QTextFormat::FrameTopMargin)) writer.writeAttribute(foNS, QString::fromLatin1("margin-top"), pixelToPoint(qMax(qreal(0.), format.topMargin())) ); - if (format.hasProperty(QTextFormat::BlockBottomMargin)) + if (format.hasProperty(QTextFormat::FrameBottomMargin)) writer.writeAttribute(foNS, QString::fromLatin1("margin-bottom"), pixelToPoint(qMax(qreal(0.), format.bottomMargin())) ); - if (format.hasProperty(QTextFormat::BlockLeftMargin)) + if (format.hasProperty(QTextFormat::FrameLeftMargin)) writer.writeAttribute(foNS, QString::fromLatin1("margin-left"), pixelToPoint(qMax(qreal(0.), format.leftMargin())) ); - if (format.hasProperty(QTextFormat::BlockRightMargin)) + if (format.hasProperty(QTextFormat::FrameRightMargin)) writer.writeAttribute(foNS, QString::fromLatin1("margin-right"), pixelToPoint(qMax(qreal(0.), format.rightMargin())) ); writer.writeEndElement(); // style diff --git a/tests/auto/qtextodfwriter/tst_qtextodfwriter.cpp b/tests/auto/qtextodfwriter/tst_qtextodfwriter.cpp index 43f859c..9a62277 100644 --- a/tests/auto/qtextodfwriter/tst_qtextodfwriter.cpp +++ b/tests/auto/qtextodfwriter/tst_qtextodfwriter.cpp @@ -72,6 +72,7 @@ private slots: void testWriteAll(); void testWriteSection(); void testWriteTable(); + void testWriteFrameFormat(); private: /// closes the document and returns the part of the XML stream that the test wrote @@ -422,5 +423,23 @@ void tst_QTextOdfWriter::testWriteTable() QCOMPARE(getContentFromXml(), xml); } +void tst_QTextOdfWriter::testWriteFrameFormat() +{ + QTextFrameFormat tff; + tff.setTopMargin(20); + tff.setBottomMargin(20); + tff.setLeftMargin(20); + tff.setRightMargin(20); + QTextCursor tc(document); + odfWriter->writeFrameFormat(*xmlWriter, tff, 0); + // Value of 15pt is based on the pixelToPoint() calculation done in qtextodfwriter.cpp + QString xml = QString::fromLatin1( + "" + "" + ""); + QCOMPARE(getContentFromXml(), xml); +} + QTEST_MAIN(tst_QTextOdfWriter) #include "tst_qtextodfwriter.moc" -- cgit v0.12