summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.co.uk>2013-10-21 09:31:55 +0200
committerMiklos Vajna <vmiklos@collabora.co.uk>2013-10-21 09:36:33 +0200
commita35fa8d8b127cb23ebff3952291742bf28477c74 (patch)
tree68a2172f2221708cb0de9508ff40670ef01d90f5
parent8831afd5d7a0a7177df00929c9bed6a05d721851 (diff)
fdo#70221 fix RTF import of multi-group pictures
Pictures typically have a single RTF group, so we imported them at the end of that group. Though multiple inner groups are also allowed, so make sure we only do the import at the very end, instead of at the end of all inner groups as well, resulting in multiple (fake) pictures. Regression from 13c00ce322e78eb4e0f50ab84ded19cd6aae1ded (Enable the writerfilter-based RTF import in non-experimental mode, 2011-08-18). Change-Id: Id895b2c6d3b824d09d89bfa01ce59aba76c55d42
-rw-r--r--sw/qa/extras/rtfimport/data/fdo70221.rtfbin0 -> 3714 bytes
-rw-r--r--sw/qa/extras/rtfimport/rtfimport.cxx10
-rw-r--r--writerfilter/source/rtftok/rtfdocumentimpl.cxx1
3 files changed, 11 insertions, 0 deletions
diff --git a/sw/qa/extras/rtfimport/data/fdo70221.rtf b/sw/qa/extras/rtfimport/data/fdo70221.rtf
new file mode 100644
index 000000000000..1ca7939c64c1
--- /dev/null
+++ b/sw/qa/extras/rtfimport/data/fdo70221.rtf
Binary files differ
diff --git a/sw/qa/extras/rtfimport/rtfimport.cxx b/sw/qa/extras/rtfimport/rtfimport.cxx
index 8622d405793f..45d6c3922565 100644
--- a/sw/qa/extras/rtfimport/rtfimport.cxx
+++ b/sw/qa/extras/rtfimport/rtfimport.cxx
@@ -167,6 +167,7 @@ public:
void testFdo68076();
void testFdo68291();
void testFdo69384();
+ void testFdo70221();
CPPUNIT_TEST_SUITE(Test);
#if !defined(MACOSX) && !defined(WNT)
@@ -319,6 +320,7 @@ void Test::run()
{"fdo68076.rtf", &Test::testFdo68076},
{"fdo68291.odt", &Test::testFdo68291},
{"hello.rtf", &Test::testFdo69384},
+ {"fdo70221.rtf", &Test::testFdo70221},
};
header();
for (unsigned int i = 0; i < SAL_N_ELEMENTS(aMethods); ++i)
@@ -1539,6 +1541,14 @@ void Test::testFdo69384()
getStyles("ParagraphStyles")->getByName("Text body justified");
}
+void Test::testFdo70221()
+{
+ uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xDraws(xDrawPageSupplier->getDrawPage(), uno::UNO_QUERY);
+ // The picture was imported twice.
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xDraws->getCount());
+}
+
CPPUNIT_TEST_SUITE_REGISTRATION(Test);
CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
index d3614b92cb05..cedf5cef31ba 100644
--- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx
+++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
@@ -3779,6 +3779,7 @@ int RTFDocumentImpl::pushState()
case DESTINATION_SHAPETEXT:
case DESTINATION_FORMFIELD:
case DESTINATION_FIELDINSTRUCTION:
+ case DESTINATION_PICT:
m_aStates.top().nDestinationState = DESTINATION_NORMAL;
break;
case DESTINATION_MNUM: