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-15 11:08:55 -0500
commit36ae57de85d6a6b82645018b71d8fd752cf6bc4d (patch)
tree92295a49e888646cc838009ffeb17628e380e478
parent1fb8c4dbd504cbacf748ec4564370ba5250834c0 (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.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 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 =