diff options
author | Michael Stahl <mstahl@redhat.com> | 2014-08-12 17:47:20 +0200 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2014-08-12 17:56:44 +0200 |
commit | 555c988f3b896e16afc7bdd1bd98e48229599637 (patch) | |
tree | 7108a54f8a0cf20a0d1c73fcbb0fcd425eb941c4 | |
parent | 0765c16b6a738974fee600280b82dc46bb06b3b6 (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
-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 299fea7ae161..8cd4b09b1064 100644 --- a/sw/qa/extras/odfimport/odfimport.cxx +++ b/sw/qa/extras/odfimport/odfimport.cxx @@ -345,6 +345,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 81c12bceb92a..6ee1e7346ae9 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(); } rtl::Reference < XMLTextImportHelper > xTxtImport = |