summaryrefslogtreecommitdiff
path: root/xmloff/source/text
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.co.uk>2017-04-26 17:52:27 +0200
committerMiklos Vajna <vmiklos@collabora.co.uk>2017-04-27 09:42:30 +0200
commitfee240db94d110d5c34d05c3b6c1792fece7a716 (patch)
treecfeb95c8f6b69976e9fe8fbf8f985261b37bce06 /xmloff/source/text
parentf9de9af221f0824afda7660694c15fcf24836a48 (diff)
tdf#107392 ODF import: fix z-order sorting of SVG imagescp-5.3-8-win
The problem was that in case the document has shapes where the order does not match the z-index order, so sorting is needed, then sorting failed to take the multi-image feature into account. E.g. SVG images have a PNG fallback, but at the end of the shape import the PNG fallback is removed, which means the "actual" (not the "wished") z-index of the shapes after the SVG image has to be adjusted. Without this happening SvxDrawPage::getByIndex() (or in case of Writer, SwTextBoxHelper::getByIndex()) will throw when the importer calls getByIndex(3) but we only have 3 shapes. This results in not honoring the z-index request of the remaining shapes. Regression from commit 44cfc7cb6533d827fd2d6e586d92c61d7d7f7a70 (re-base on ALv2 code. Includes (at least) relevant parts of:, 2012-10-09), from the Svg: Reintegrated Svg replacement from /branches/alg/svgreplavement http://svn.apache.org/viewvc?view=revision&revision=1220836 part. Reviewed-on: https://gerrit.libreoffice.org/36998 Tested-by: Jenkins <ci@libreoffice.org> Conflicts: sw/qa/extras/odfimport/odfimport.cxx Change-Id: Ibe880e5c6c74b728b4a760498720ee31f052b726
Diffstat (limited to 'xmloff/source/text')
-rw-r--r--xmloff/source/text/XMLTextFrameContext.cxx7
-rw-r--r--xmloff/source/text/XMLTextFrameContext.hxx2
2 files changed, 7 insertions, 2 deletions
diff --git a/xmloff/source/text/XMLTextFrameContext.cxx b/xmloff/source/text/XMLTextFrameContext.cxx
index 2d72c1758092..7edb08702ac6 100644
--- a/xmloff/source/text/XMLTextFrameContext.cxx
+++ b/xmloff/source/text/XMLTextFrameContext.cxx
@@ -768,7 +768,7 @@ void XMLTextFrameContext_Impl::Create( bool /*bHRefOrBase64*/ )
}
}
-void XMLTextFrameContext::removeGraphicFromImportContext(const SvXMLImportContext& rContext) const
+void XMLTextFrameContext::removeGraphicFromImportContext(const SvXMLImportContext& rContext)
{
const XMLTextFrameContext_Impl* pXMLTextFrameContext_Impl = dynamic_cast< const XMLTextFrameContext_Impl* >(&rContext);
@@ -779,6 +779,11 @@ void XMLTextFrameContext::removeGraphicFromImportContext(const SvXMLImportContex
// just dispose to delete
uno::Reference< lang::XComponent > xComp(pXMLTextFrameContext_Impl->GetPropSet(), UNO_QUERY);
+ // Inform shape importer about the removal so it can adjust
+ // z-indxes.
+ uno::Reference<drawing::XShape> xShape(xComp, uno::UNO_QUERY);
+ GetImport().GetShapeImport()->shapeRemoved(xShape);
+
if(xComp.is())
{
xComp->dispose();
diff --git a/xmloff/source/text/XMLTextFrameContext.hxx b/xmloff/source/text/XMLTextFrameContext.hxx
index 8f19eda2d70e..2f82ea50ffac 100644
--- a/xmloff/source/text/XMLTextFrameContext.hxx
+++ b/xmloff/source/text/XMLTextFrameContext.hxx
@@ -60,7 +60,7 @@ class XMLTextFrameContext : public SvXMLImportContext, public MultiImageImportHe
protected:
/// helper to get the created xShape instance, needs to be overridden
virtual OUString getGraphicURLFromImportContext(const SvXMLImportContext& rContext) const override;
- virtual void removeGraphicFromImportContext(const SvXMLImportContext& rContext) const override;
+ virtual void removeGraphicFromImportContext(const SvXMLImportContext& rContext) override;
public: