fdo#46669 testcase
diff --git a/sw/CppunitTest_sw_subsequent_rtfimport.mk b/sw/CppunitTest_sw_subsequent_rtfimport.mk
index 2cc2110..906bf57 100644
--- a/sw/CppunitTest_sw_subsequent_rtfimport.mk
+++ b/sw/CppunitTest_sw_subsequent_rtfimport.mk
@@ -43,6 +43,7 @@ $(eval $(call gb_CppunitTest_use_libraries,sw_subsequent_rtfimport, \
unotest \
vcl \
tl \
utl \
$(gb_UWINAPI) \
))
diff --git a/sw/qa/extras/rtfimport/data/copypaste-pagestyle-paste.rtf b/sw/qa/extras/rtfimport/data/copypaste-pagestyle-paste.rtf
new file mode 100644
index 0000000..3eca5f0
--- /dev/null
+++ b/sw/qa/extras/rtfimport/data/copypaste-pagestyle-paste.rtf
@@ -0,0 +1,17 @@
{\rtf\ansi
{\fonttbl
{\f0\froman\fprq2\fcharset0 Times New Roman;}
{\f1\fprq2\fcharset0 Arial;}
{\f2\fprq2\fcharset0 Arial;}
{\f3\fswiss\fprq2\fcharset0 Arial;}
{\f4\fprq2\fcharset0 Droid Sans Fallback;}
}
{\colortbl\red255\green255\blue255;}
{\*\EditEnginePoolDefaults\ltrpar\fi0\li0\ri0\fi0\li0\ri0\sb0\sa0\sl0\slmult0\ql\cf0\f0\fs13\b0\ulnone\strike0\i0\outl0\shad0\kerning0\expndtw0\f1\f1\fs13\fs13\b0\b0\i0\i0\accnone\olnone}
\deftab408
{
\ltrpar\f3\fs20\b0\ulnone\strike0\i0\outl0\shad0\f4\f1\fs20\fs20\b0\b0\i0\i0\accnone\olnone
{\f3\fs20\b0\i0 1}
\par\pard\plain
}
}
diff --git a/sw/qa/extras/rtfimport/data/copypaste-pagestyle.rtf b/sw/qa/extras/rtfimport/data/copypaste-pagestyle.rtf
new file mode 100644
index 0000000..6ab0e63
--- /dev/null
+++ b/sw/qa/extras/rtfimport/data/copypaste-pagestyle.rtf
@@ -0,0 +1,3 @@
{\rtf1
\paperh16838\paperw11906\margl1134\margr1134\margt1134\margb1134
\par }
diff --git a/sw/qa/extras/rtfimport/rtfimport.cxx b/sw/qa/extras/rtfimport/rtfimport.cxx
index 28517ee..d0376b7 100644
--- a/sw/qa/extras/rtfimport/rtfimport.cxx
+++ b/sw/qa/extras/rtfimport/rtfimport.cxx
@@ -28,6 +28,8 @@
#include "../swmodeltestbase.hxx"
#include "bordertest.hxx"
#include <com/sun/star/document/XFilter.hpp>
#include <com/sun/star/document/XImporter.hpp>
#include <com/sun/star/drawing/EnhancedCustomShapeSegment.hpp>
#include <com/sun/star/drawing/XDrawPageSupplier.hpp>
#include <com/sun/star/graphic/GraphicType.hpp>
@@ -54,6 +56,8 @@
#include <rtl/ustring.hxx>
#include <vcl/outdev.hxx>
#include <vcl/svapp.hxx>
#include <unotools/ucbstreamhelper.hxx>
#include <unotools/streamwrap.hxx>
#define TWIP_TO_MM100(TWIP) ((TWIP) >= 0 ? (((TWIP)*127L+36L)/72L) : (((TWIP)*127L-36L)/72L))
@@ -110,6 +114,7 @@ public:
void testFdo49655();
void testFdo52475();
void testFdo55493();
void testCopyPastePageStyle();
CPPUNIT_TEST_SUITE(Test);
#if !defined(MACOSX) && !defined(WNT)
@@ -163,6 +168,7 @@ public:
CPPUNIT_TEST(testFdo49655);
CPPUNIT_TEST(testFdo52475);
CPPUNIT_TEST(testFdo55493);
CPPUNIT_TEST(testCopyPastePageStyle);
#endif
CPPUNIT_TEST_SUITE_END();
@@ -864,6 +870,29 @@ void Test::testFdo55493()
CPPUNIT_ASSERT_EQUAL(sal_Int32(3969), xShape->getSize().Width);
}
void Test::testCopyPastePageStyle()
{
// The problem was that RTF import during copy&paste did not ignore page styles.
load("copypaste-pagestyle.rtf");
// Once we have more copy&paste tests, makes sense to refactor this to some helper method.
uno::Reference<uno::XInterface> xInterface(m_xSFactory->createInstance("com.sun.star.comp.Writer.RtfFilter"), uno::UNO_QUERY_THROW);
uno::Reference<document::XImporter> xImporter(xInterface, uno::UNO_QUERY_THROW);
xImporter->setTargetDocument(mxComponent);
uno::Reference<document::XFilter> xFilter(xInterface, uno::UNO_QUERY_THROW);
uno::Sequence<beans::PropertyValue> aDescriptor(2);
aDescriptor[0].Name = "InputStream";
SvStream* pStream = utl::UcbStreamHelper::CreateStream(getURLFromSrc("/sw/qa/extras/rtfimport/data/") + "copypaste-pagestyle-paste.rtf", STREAM_WRITE);
uno::Reference<io::XStream> xStream(new utl::OStreamWrapper(*pStream));
aDescriptor[0].Value <<= xStream;
aDescriptor[1].Name = "IsNewDoc";
aDescriptor[1].Value <<= sal_False;
xFilter->filter(aDescriptor);
uno::Reference<beans::XPropertySet> xPropertySet(getStyles("PageStyles")->getByName("Default"), uno::UNO_QUERY);
CPPUNIT_ASSERT_EQUAL(sal_Int32(21001), getProperty<sal_Int32>(xPropertySet, "Width")); // Was letter, i.e. 21590
}
CPPUNIT_TEST_SUITE_REGISTRATION(Test);
CPPUNIT_PLUGIN_IMPLEMENT();