Kaydet (Commit) d3d714f7 authored tarafından Tamás Zolnai's avatar Tamás Zolnai Kaydeden (comit) Caolán McNamara

tdf#103544: DOCX exp.: Image loss when have a frame anchored to the same para.

Regression from:
83d51e5e

Partly revert the commit causes this regression.
I checked the related bugs (tdf#78590,tdf#80748)
intended to be fixed by this commit and reverting
this part does not bring back the corruption.
I guess something changed in frames' and text boxes'
import in the meantime, because this MergeMarks::IGNORE
is useless now.

Reviewed-on: https://gerrit.libreoffice.org/30351Reviewed-by: 's avatarTamás Zolnai <tamas.zolnai@collabora.com>
Tested-by: 's avatarTamás Zolnai <tamas.zolnai@collabora.com>

Conflicts:
	sw/qa/extras/ooxmlexport/ooxmlexport9.cxx

Change-Id: If17776e8628561961c7ce2a2994e3fc609f75639
Reviewed-on: https://gerrit.libreoffice.org/30358Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarCaolán McNamara <caolanm@redhat.com>
Tested-by: 's avatarCaolán McNamara <caolanm@redhat.com>
üst 5bbad83f
......@@ -60,7 +60,7 @@ const sal_Int32 FSEND_internal = -1; // same as XML_TOKEN_INVALID
namespace sax_fastparser {
enum class MergeMarks { APPEND = 0, PREPEND = 1, POSTPONE = 2, IGNORE = 3 };
enum class MergeMarks { APPEND = 0, PREPEND = 1, POSTPONE = 2};
typedef css::uno::Reference< css::xml::sax::XFastAttributeList > XFastAttributeListRef;
......
......@@ -405,7 +405,7 @@ namespace sax_fastparser {
// flush, so that we get everything in getData()
maCachedOutputStream.flush();
if (maMarkStack.size() == 1 && eMergeType != MergeMarks::IGNORE)
if (maMarkStack.size() == 1)
{
#ifdef DBG_UTIL
while (!maMarkStack.top()->m_DebugEndedElements.empty())
......@@ -469,8 +469,6 @@ namespace sax_fastparser {
topDebugEndedElements,
topDebugStartedElements);
break;
case MergeMarks::IGNORE:
break;
}
#endif
if (maMarkStack.empty())
......@@ -488,8 +486,6 @@ namespace sax_fastparser {
case MergeMarks::APPEND: maMarkStack.top()->append( aMerge ); break;
case MergeMarks::PREPEND: maMarkStack.top()->prepend( aMerge ); break;
case MergeMarks::POSTPONE: maMarkStack.top()->postpone( aMerge ); break;
case MergeMarks::IGNORE: break;
}
}
......
......@@ -25,6 +25,7 @@
#include <com/sun/star/text/GraphicCrop.hpp>
#include <com/sun/star/text/HoriOrientation.hpp>
#include <com/sun/star/text/RelOrientation.hpp>
#include <com/sun/star/graphic/XGraphic.hpp>
#include <pagedesc.hxx>
#include <comphelper/sequenceashashmap.hxx>
......@@ -1171,6 +1172,19 @@ DECLARE_OOXMLEXPORT_TEST(testTdf103573, "tdf103573.docx")
CPPUNIT_ASSERT_EQUAL_MESSAGE("Not centered horizontally relatively to right page border", text::RelOrientation::PAGE_RIGHT, nValue);
}
DECLARE_OOXMLEXPORT_TEST(testTdf103544, "tdf103544.docx")
{
// We have two shapes: a frame and an image
uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(mxComponent, uno::UNO_QUERY);
uno::Reference<drawing::XDrawPage> xDrawPage = xDrawPageSupplier->getDrawPage();
CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(2), xDrawPage->getCount());
// Image was lost because of the frame export
uno::Reference<beans::XPropertySet> xImage(getShape(1), uno::UNO_QUERY);
auto xGraphic = getProperty<uno::Reference<graphic::XGraphic> >(xImage, "Graphic");
CPPUNIT_ASSERT(xGraphic.is());
}
#endif
CPPUNIT_PLUGIN_IMPLEMENT();
......
......@@ -498,8 +498,8 @@ DECLARE_OOXMLEXPORT_TEST(testFDO78590, "FDO78590.docx")
return;
// This is to ensure that the fld starts and ends inside a hyperlink...
assertXPath ( pXmlDoc, "/w:document/w:body/w:p[1]/w:pPr/w:framePr", "w", "9851" );
assertXPath ( pXmlDoc, "/w:document/w:body/w:p[1]/w:pPr/w:framePr", "h", "1669" );
assertXPath ( pXmlDoc, "/w:document/w:body/w:p[2]/w:pPr/w:framePr", "w", "9851" );
assertXPath ( pXmlDoc, "/w:document/w:body/w:p[2]/w:pPr/w:framePr", "h", "1669" );
}
DECLARE_OOXMLEXPORT_TEST(testSdtCitationRun, "sdt-citation-run.docx")
......
......@@ -579,10 +579,7 @@ void DocxAttributeOutput::EndParagraph( ww8::WW8TableNodeInfoInner::Pointer_t pT
//sdtcontent is written so Set m_bParagraphHasDrawing to false
m_rExport.SdrExporter().setParagraphHasDrawing( false );
m_bRunTextIsOn = false;
if(aFramePrTextbox.empty())
m_pSerializer->mergeTopMarks(Tag_StartParagraph_1);
else
m_pSerializer->mergeTopMarks(Tag_StartParagraph_1, sax_fastparser::MergeMarks::IGNORE);
m_pSerializer->mergeTopMarks(Tag_StartParagraph_1);
// Write framePr
if(!aFramePrTextbox.empty())
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment