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@collabora.com>
This commit is contained in:
parent
3d0eebe0f1
commit
35021cd56b
6 changed files with 38 additions and 1 deletions
|
@ -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(
|
||||
|
|
Binary file not shown.
|
@ -2539,5 +2539,23 @@ DECLARE_ODFEXPORT_TEST(testPageContentBottom, "page-content-bottom.odt")
|
|||
CPPUNIT_ASSERT_EQUAL(nExpected, getProperty<sal_Int16>(xShape, "VertOrientRelation"));
|
||||
}
|
||||
|
||||
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());
|
||||
|
||||
xmlDocUniquePtr pXmlDoc = parseExport("content.xml");
|
||||
if (!pXmlDoc)
|
||||
return;
|
||||
|
||||
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: */
|
||||
|
|
|
@ -1156,6 +1156,13 @@ void SwXMLExport::ExportTable( const SwTableNode& rTableNd )
|
|||
lcl_xmltble_ClearName_Line( pLine );
|
||||
}
|
||||
|
||||
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 )
|
||||
|
@ -1193,7 +1200,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
|
||||
{
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
class SwXMLExport;
|
||||
class SvXMLAutoStylePoolP;
|
||||
class SwNoTextNode;
|
||||
class SwTableNode;
|
||||
namespace com::sun::star::style { class XStyle; }
|
||||
|
||||
class SwXMLTextParagraphExport : public XMLTextParagraphExport
|
||||
|
@ -36,6 +37,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 );
|
||||
|
||||
|
@ -50,6 +54,8 @@ protected:
|
|||
const css::uno::Reference< css::text::XTextContent > & rTextContent,
|
||||
bool bAutoStyles, bool bProgress ) override;
|
||||
|
||||
virtual void exportTableAutoStyles() override;
|
||||
|
||||
public:
|
||||
SwXMLTextParagraphExport(
|
||||
SwXMLExport& rExp,
|
||||
|
|
|
@ -3705,8 +3705,12 @@ void XMLTextParagraphExport::recordTrackedChangesNoXText()
|
|||
pRedlineExport->SetCurrentXText();
|
||||
}
|
||||
|
||||
void XMLTextParagraphExport::exportTableAutoStyles() {}
|
||||
|
||||
void XMLTextParagraphExport::exportTextAutoStyles()
|
||||
{
|
||||
exportTableAutoStyles();
|
||||
|
||||
GetAutoStylePool().exportXML( XmlStyleFamily::TEXT_PARAGRAPH );
|
||||
|
||||
GetAutoStylePool().exportXML( XmlStyleFamily::TEXT_TEXT );
|
||||
|
|
Loading…
Reference in a new issue