diff options
author | Michael Stahl <mstahl@redhat.com> | 2014-08-12 17:47:20 +0200 |
---|---|---|
committer | David Tardon <dtardon@redhat.com> | 2014-08-14 03:21:45 -0500 |
commit | 9c4c37e3745a3998f29d8aa15d2023cb3d07424b (patch) | |
tree | fac11daeabd865d427c74040673ca6aba0ce48fd | |
parent | 902436078cb8df65d06617d5980cd8834ec8f8c9 (diff) |
fdo#82165: ODF import: clear all shapes when removing header content
Shapes anchored to the first or last paragraph survive setString("")
so need to be deleted with some ruse.
(regression from b8499fc3dcf474050f026b8d5cd1d9037bbe42b7)
Change-Id: I00a8132583c45d1953c207932cc7f02f3065ae77
(cherry picked from commit 555c988f3b896e16afc7bdd1bd98e48229599637)
Reviewed-on: https://gerrit.libreoffice.org/10895
Reviewed-by: David Tardon <dtardon@redhat.com>
Tested-by: David Tardon <dtardon@redhat.com>
-rw-r--r-- | sw/qa/extras/odfimport/data/fdo82165.odt | bin | 0 -> 10663 bytes | |||
-rw-r--r-- | sw/qa/extras/odfimport/odfimport.cxx | 10 | ||||
-rw-r--r-- | xmloff/source/text/XMLTextHeaderFooterContext.cxx | 13 |
3 files changed, 21 insertions, 2 deletions
diff --git a/sw/qa/extras/odfimport/data/fdo82165.odt b/sw/qa/extras/odfimport/data/fdo82165.odt Binary files differnew file mode 100644 index 000000000000..65a4084b704a --- /dev/null +++ b/sw/qa/extras/odfimport/data/fdo82165.odt diff --git a/sw/qa/extras/odfimport/odfimport.cxx b/sw/qa/extras/odfimport/odfimport.cxx index 879513bfbbc2..e7fa8fbe4743 100644 --- a/sw/qa/extras/odfimport/odfimport.cxx +++ b/sw/qa/extras/odfimport/odfimport.cxx @@ -344,6 +344,16 @@ DECLARE_ODFIMPORT_TEST(testFdo68839, "fdo68839.odt") getProperty<OUString>(xFrame2, "ChainNextName")); } +DECLARE_ODFIMPORT_TEST(testFdo82165, "fdo82165.odt") +{ + // there was a duplicate shape in the left header + lcl_CheckShape(getShape(1), "Picture 9"); + try { + uno::Reference<drawing::XShape> xShape = getShape(2); + CPPUNIT_FAIL("IndexOutOfBoundsException expected"); + } catch (lang::IndexOutOfBoundsException const&) { } +} + DECLARE_ODFIMPORT_TEST(testFdo37606, "fdo37606.odt") { SwXTextDocument* pTxtDoc = dynamic_cast<SwXTextDocument *>(mxComponent.get()); diff --git a/xmloff/source/text/XMLTextHeaderFooterContext.cxx b/xmloff/source/text/XMLTextHeaderFooterContext.cxx index 2a711b02fa73..27cbc9c62a4c 100644 --- a/xmloff/source/text/XMLTextHeaderFooterContext.cxx +++ b/xmloff/source/text/XMLTextHeaderFooterContext.cxx @@ -18,6 +18,7 @@ */ #include <com/sun/star/text/XText.hpp> +#include <com/sun/star/text/XParagraphAppend.hpp> #include <com/sun/star/text/XRelativeTextContentRemove.hpp> #include <xmloff/nmspmap.hxx> #include <xmloff/xmlnmspe.hxx> @@ -158,8 +159,16 @@ SvXMLImportContext *XMLTextHeaderFooterContext::CreateChildContext( if( bRemoveContent ) { - OUString aText; - xText->setString( aText ); + xText->setString(OUString()); + // fdo#82165 shapes anchored at the beginning or end survive + // setString("") - kill them the hard way: SwDoc::DelFullPara() + uno::Reference<text::XParagraphAppend> const xAppend( + xText, uno::UNO_QUERY_THROW); + uno::Reference<lang::XComponent> const xPara( + xAppend->finishParagraph( + uno::Sequence<beans::PropertyValue>()), + uno::UNO_QUERY_THROW); + xPara->dispose(); } UniReference < XMLTextImportHelper > xTxtImport = |