Use the right properties when checking the frame's margins
authorAndy Shaw <andy.shaw@digia.com>
Thu, 18 Oct 2012 13:34:26 +0000 (15:34 +0200)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Thu, 18 Oct 2012 18:56:05 +0000 (20:56 +0200)
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 <simon.hausmann@digia.com>
src/gui/text/qtextodfwriter.cpp
tests/auto/gui/text/qtextodfwriter/tst_qtextodfwriter.cpp

index 33c6ddd..8f6025f 100644 (file)
@@ -666,13 +666,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
index 74a7ac9..c287ef3 100644 (file)
@@ -69,6 +69,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
@@ -419,5 +420,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(
+            "<style:style style:name=\"s0\" style:family=\"section\">"
+            "<style:section-properties fo:margin-top=\"15pt\" fo:margin-bottom=\"15pt\""
+            " fo:margin-left=\"15pt\" fo:margin-right=\"15pt\"/>"
+            "</style:style>");
+    QCOMPARE(getContentFromXml(), xml);
+}
+
 QTEST_MAIN(tst_QTextOdfWriter)
 #include "tst_qtextodfwriter.moc"