[Libreoffice-commits] core.git: Branch 'libreoffice-6-4' - include/xmloff sw/qa sw/source xmloff/source

Mike Kaganski (via logerrit) logerrit at kemper.freedesktop.org
Thu Sep 10 10:52:07 UTC 2020


 include/xmloff/txtparae.hxx                                        |    2 +
 sw/qa/extras/odfexport/data/tdf124470TableAndEmbeddedUsedFonts.odt |binary
 sw/qa/extras/odfexport/odfexport.cxx                               |   17 ++++++++++
 sw/source/filter/xml/xmltble.cxx                                   |    9 ++++-
 sw/source/filter/xml/xmltexte.hxx                                  |    6 +++
 xmloff/source/text/txtparae.cxx                                    |    4 ++
 6 files changed, 37 insertions(+), 1 deletion(-)

New commits:
commit 7b661ad44b81a200caaff0afaa0c822e3d635ee5
Author:     Mike Kaganski <mike.kaganski at collabora.com>
AuthorDate: Wed Aug 5 11:16:32 2020 +0300
Commit:     Xisco Fauli <xiscofauli at libreoffice.org>
CommitDate: Thu Sep 10 12:51:33 2020 +0200

    tdf#124470: Split export of table autostyles out from collection phase
    
    This allows to call collectAutoStyles where required (e.g. when enumerating
    used fonts), without side effect of writing table styles XML inside the call,
    out of place.
    
    Change-Id: Ida05e373eb8502590c43e2b0e85c3b0c1107c551
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/100153
    Tested-by: Jenkins
    Reviewed-by: Mike Kaganski <mike.kaganski at collabora.com>
    (cherry picked from commit 35021cd56b3b4e38035804087f215c80085564be)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/100221
    Reviewed-by: Xisco Fauli <xiscofauli at libreoffice.org>
    Signed-off-by: Xisco Fauli <xiscofauli at libreoffice.org>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/100274

diff --git a/include/xmloff/txtparae.hxx b/include/xmloff/txtparae.hxx
index b85f78f1dbfe..7ded21114fd6 100644
--- a/include/xmloff/txtparae.hxx
+++ b/include/xmloff/txtparae.hxx
@@ -365,6 +365,8 @@ protected:
         const css::uno::Reference< css::beans::XPropertySet> & i_xPortion,
         bool i_bAutoStyles, bool i_isProgress, bool & rPrevCharIsSpace);
 
+    virtual void exportTableAutoStyles();
+
 public:
 
     XMLTextParagraphExport(
diff --git a/sw/qa/extras/odfexport/data/tdf124470TableAndEmbeddedUsedFonts.odt b/sw/qa/extras/odfexport/data/tdf124470TableAndEmbeddedUsedFonts.odt
new file mode 100644
index 000000000000..21969e9e5485
Binary files /dev/null and b/sw/qa/extras/odfexport/data/tdf124470TableAndEmbeddedUsedFonts.odt differ
diff --git a/sw/qa/extras/odfexport/odfexport.cxx b/sw/qa/extras/odfexport/odfexport.cxx
index 2d38f8828f0c..bfc17ca284f3 100644
--- a/sw/qa/extras/odfexport/odfexport.cxx
+++ b/sw/qa/extras/odfexport/odfexport.cxx
@@ -2338,5 +2338,22 @@ DECLARE_ODFEXPORT_TEST(tdf121658, "tdf121658.odt")
     CPPUNIT_ASSERT_EQUAL(true, getProperty<bool>(xStyle1, "ParaHyphenationNoCaps"));
 }
 
+DECLARE_ODFEXPORT_TEST(tdf124470, "tdf124470TableAndEmbeddedUsedFonts.odt")
+{
+    // Table styles were exported out of place, inside font-face-decls.
+    // Without the fix in place, this will fail already in ODF validation:
+    // "content.xml[2,2150]:  Error: tag name "style:style" is not allowed. Possible tag names are: <font-face>"
+
+    CPPUNIT_ASSERT_EQUAL(1, getPages());
+
+    if (xmlDocPtr pXmlDoc = parseExport("content.xml"))
+    {
+        assertXPath(pXmlDoc, "/office:document-content/office:font-face-decls/style:style", 0);
+        assertXPath(pXmlDoc, "/office:document-content/office:automatic-styles/style:style[@style:family='table']", 1);
+        assertXPath(pXmlDoc, "/office:document-content/office:automatic-styles/style:style[@style:family='table-column']", 2);
+        assertXPath(pXmlDoc, "/office:document-content/office:automatic-styles/style:style[@style:family='paragraph']", 1);
+    }
+}
+
 CPPUNIT_PLUGIN_IMPLEMENT();
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/filter/xml/xmltble.cxx b/sw/source/filter/xml/xmltble.cxx
index bef72a6f5357..80d786d8d884 100644
--- a/sw/source/filter/xml/xmltble.cxx
+++ b/sw/source/filter/xml/xmltble.cxx
@@ -1140,6 +1140,13 @@ void SwXMLExport::ExportTable( const SwTableNode& rTableNd )
     }
 }
 
+void SwXMLTextParagraphExport::exportTableAutoStyles() {
+    for (const auto* pTableNode : maTableNodes)
+    {
+        static_cast<SwXMLExport&>(GetExport()).ExportTableAutoStyles(*pTableNode);
+    }
+}
+
 void SwXMLTextParagraphExport::exportTable(
         const Reference < XTextContent > & rTextContent,
         bool bAutoStyles, bool _bProgress )
@@ -1177,7 +1184,7 @@ void SwXMLTextParagraphExport::exportTable(
                 // ALL flags are set at the same time.
                 const bool bExportStyles = bool( GetExport().getExportFlags() & SvXMLExportFlags::STYLES );
                 if ( bExportStyles || !pFormat->GetDoc()->IsInHeaderFooter( aIdx ) )
-                    static_cast<SwXMLExport&>(GetExport()).ExportTableAutoStyles( *pTableNd );
+                    maTableNodes.push_back(pTableNd);
             }
             else
             {
diff --git a/sw/source/filter/xml/xmltexte.hxx b/sw/source/filter/xml/xmltexte.hxx
index 8da021506c0d..4432e4ce0166 100644
--- a/sw/source/filter/xml/xmltexte.hxx
+++ b/sw/source/filter/xml/xmltexte.hxx
@@ -28,6 +28,7 @@
 class SwXMLExport;
 class SvXMLAutoStylePoolP;
 class SwNoTextNode;
+class SwTableNode;
 
 namespace com { namespace sun { namespace star { namespace style {
                 class XStyle; } } } }
@@ -38,6 +39,9 @@ class SwXMLTextParagraphExport : public XMLTextParagraphExport
     const SvGlobalName aPluginClassId;
     const SvGlobalName aIFrameClassId;
 
+    // Collected autostyles for use in exportTextAutoStyles
+    std::vector<const SwTableNode*> maTableNodes;
+
     static SwNoTextNode *GetNoTextNode(
         const css::uno::Reference < css::beans::XPropertySet >& rPropSet );
 
@@ -52,6 +56,8 @@ protected:
         const css::uno::Reference< css::text::XTextContent > & rTextContent,
         bool bAutoStyles, bool bProgress ) override;
 
+    virtual void exportTableAutoStyles() override;
+
 public:
     SwXMLTextParagraphExport(
         SwXMLExport& rExp,
diff --git a/xmloff/source/text/txtparae.cxx b/xmloff/source/text/txtparae.cxx
index 0238e918535d..b830da30579b 100644
--- a/xmloff/source/text/txtparae.cxx
+++ b/xmloff/source/text/txtparae.cxx
@@ -3671,8 +3671,12 @@ void XMLTextParagraphExport::recordTrackedChangesNoXText()
         pRedlineExport->SetCurrentXText();
 }
 
+void XMLTextParagraphExport::exportTableAutoStyles() {}
+
 void XMLTextParagraphExport::exportTextAutoStyles()
 {
+    exportTableAutoStyles();
+
     GetAutoStylePool().exportXML( XML_STYLE_FAMILY_TEXT_PARAGRAPH );
 
     GetAutoStylePool().exportXML( XML_STYLE_FAMILY_TEXT_TEXT );


More information about the Libreoffice-commits mailing list