sw/qa/extras/ooxmlexport/data/fdo79540.docx |binary sw/qa/extras/ooxmlexport/ooxmlexport.cxx | 17 +++++++++++++++++ sw/source/filter/ww8/docxattributeoutput.cxx | 8 +++++++- 3 files changed, 24 insertions(+), 1 deletion(-)
New commits: commit 69ba8e94e33c142072920fe455899c04b4e035d1 Author: Pallavi Jadhav <pallavi.jad...@synerzip.com> Date: Thu Jun 5 19:04:36 2014 +0530 fdo#79540 : DOCX: Lo exports Drawing inside Drawing Issue : - In file there is a WordArt inside Table. - In RT, LO exports <w:drawing> inside <w:drawing>. - The xml sequence was : <mc:AltrnateContent> <mc:Choice> <w:drawing> // first start of drawing <w:txbxContent> <w:tbl> <w:drawing> // second start of drawing. MSO does not allow. Implementation : - In DocxAttributeOutput::OutputFlyFrame_Impl() under "case sw::Frame::eDrawing", if drawing is already open then Postpone the Inner Drawing. - Added Export Unit Test case to check two separate drawings are now written in document.xml of RT. Change-Id: I01d06621576d60d26cd51489ee9718dd79eb9c72 Reviewed-on: https://gerrit.libreoffice.org/9653 Reviewed-by: Miklos Vajna <vmik...@collabora.co.uk> Tested-by: Miklos Vajna <vmik...@collabora.co.uk> diff --git a/sw/qa/extras/ooxmlexport/data/fdo79540.docx b/sw/qa/extras/ooxmlexport/data/fdo79540.docx new file mode 100644 index 0000000..ce843d6 Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/fdo79540.docx differ diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx index 4b5de65..30f7480 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx @@ -3510,6 +3510,23 @@ DECLARE_OOXMLEXPORT_TEST(testfdo76934, "fdo76934.docx") assertXPath ( pXmlDoc, "/w:styles[1]/w:style[36]/w:pPr[1]/w:spacing[1]", "beforeAutospacing", "1" ); } +DECLARE_OOXMLEXPORT_TEST(testfdo79540, "fdo79540.docx") +{ + /* Issue was, <w:drawing> was getting written inside <w:drawing>. + * So Postone the writing of Inner Drawing tag. + * MS Office does not allow Nestimg of drawing tags. + */ + + xmlDocPtr pXmlDoc = parseExport("word/document.xml"); + + if (!pXmlDoc) + return; + + // Ensure that two separate w:drawing tags are written after the code changes. + assertXPath ( pXmlDoc, "/w:document/w:body/w:p/w:r[2]/mc:AlternateContent/mc:Choice/w:drawing",1); + assertXPath ( pXmlDoc, "/w:document/w:body/w:p/w:r[3]/mc:AlternateContent/mc:Choice/w:drawing",1); +} + DECLARE_OOXMLEXPORT_TEST(testFDO79062, "fdo79062.docx") { xmlDocPtr pXmlFootNotes = parseExport("word/footnotes.xml"); diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx index 645688f..7e7c4a0 100644 --- a/sw/source/filter/ww8/docxattributeoutput.cxx +++ b/sw/source/filter/ww8/docxattributeoutput.cxx @@ -4390,7 +4390,13 @@ void DocxAttributeOutput::OutputFlyFrame_Impl( const sw::Frame &rFrame, const Po if ( m_postponedDMLDrawing == NULL ) { if ( IsAlternateContentChoiceOpen() ) - m_rExport.SdrExporter().writeDMLDrawing( pSdrObj, &rFrame.GetFrmFmt(), m_anchorId++); + { + // Do not write w:drawing inside w:drawing. Instead Postpone the Inner Drawing. + if( m_rExport.SdrExporter().IsDrawingOpen() ) + m_postponedCustomShape->push_back(PostponedDrawing(pSdrObj, &(rFrame.GetFrmFmt()), &rNdTopLeft)); + else + m_rExport.SdrExporter().writeDMLDrawing( pSdrObj, &rFrame.GetFrmFmt(), m_anchorId++); + } else m_rExport.SdrExporter().writeDMLAndVMLDrawing( pSdrObj, rFrame.GetFrmFmt(), rNdTopLeft, m_anchorId++); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits