diff options
author | Michael Stahl <mstahl@redhat.com> | 2014-08-12 17:47:20 +0200 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2014-08-15 11:08:55 -0500 |
commit | 36ae57de85d6a6b82645018b71d8fd752cf6bc4d (patch) | |
tree | 92295a49e888646cc838009ffeb17628e380e478 | |
parent | 1fb8c4dbd504cbacf748ec4564370ba5250834c0 (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/10894
Reviewed-by: David Tardon <dtardon@redhat.com>
Tested-by: David Tardon <dtardon@redhat.com>
(cherry picked from commit fe7d0f8b60c7a99d150b32eb5530a4a530267fab)
Reviewed-on: https://gerrit.libreoffice.org/10918
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
Reviewed-by: Eike Rathke <erack@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 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 ca59d826c79a..fd727e9ce4eb 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 = |