summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2014-08-12 17:47:20 +0200
committerMichael Stahl <mstahl@redhat.com>2014-08-12 17:56:44 +0200
commit555c988f3b896e16afc7bdd1bd98e48229599637 (patch)
tree7108a54f8a0cf20a0d1c73fcbb0fcd425eb941c4
parent0765c16b6a738974fee600280b82dc46bb06b3b6 (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.odtbin0 -> 10663 bytes
-rw-r--r--sw/qa/extras/odfimport/odfimport.cxx10
-rw-r--r--xmloff/source/text/XMLTextHeaderFooterContext.cxx13
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
new file mode 100644
index 000000000000..65a4084b704a
--- /dev/null
+++ b/sw/qa/extras/odfimport/data/fdo82165.odt
Binary files differ
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 =