summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@suse.cz>2012-03-24 13:04:54 +0100
committerMiklos Vajna <vmiklos@suse.cz>2012-03-24 16:38:39 +0100
commit0d9132c5046e15540abc20e45d64080708626441 (patch)
treeb3d739dfd799abed6e96b30d327ac8cfe863859c
parentde0f33126d5dd92e2ea8b728dcb9dc7cd3b8995c (diff)
fdo#47036 fix RTF import of shapes inside text frames at the start of the doc
-rw-r--r--sw/qa/extras/rtftok/data/fdo47036.rtf61
-rw-r--r--sw/qa/extras/rtftok/rtftok.cxx22
-rw-r--r--writerfilter/source/rtftok/rtfdocumentimpl.cxx11
3 files changed, 94 insertions, 0 deletions
diff --git a/sw/qa/extras/rtftok/data/fdo47036.rtf b/sw/qa/extras/rtftok/data/fdo47036.rtf
new file mode 100644
index 000000000000..0b5602f2bca4
--- /dev/null
+++ b/sw/qa/extras/rtftok/data/fdo47036.rtf
@@ -0,0 +1,61 @@
+{\rtf1
+\paperw11904\paperh16836\margl864\margr288\margt360\margb360\gutter0\ltrsect
+\widowctrl\ftnbj\aenddoc\donotembedsysfont0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\hyphcaps0\horzdoc\dghspace120
+\dgvspace120\dghorigin1701\dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind1\viewscale100\nolnhtadjtbl\rsidroot15426039 \fet0
+\ilfomacatclnup0\ltrpar \sectd \ltrsect\sbknone\linex0\sectdefaultcl\sftnbj
+\pard\plain \ltrpar\qc \li0\ri0\nowidctlpar
+\tx360\tx720\tx1080\tx1440\tx1800\tx2160\tx2520\tx2880\tx3240\tx3600\tx3960\tx4320\tx4680\tx5040\tx5400\tx5760\tx6120\tx6480\tx6840\tx7200\tx7560\tx7920\tx8280\tx8640\tx9000\tx9360\tx9720\pvpg\phpg\posx939
+\posy2714\absh-450\absw10080\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033
+{\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1024\langfe1024\noproof\insrsid1775824
+{\shp
+{\*\shpinst\shpleft1074\shptop528\shpright11487\shpbottom1945\shpfhdr0\shpbxpage\shpbxignore\shpbypage\shpbyignore\shpwr3\shpwrk0\shpfblwtxt1\shpz3\shplid1029
+{\sp
+{\sn shapeType}
+{\sv 75}
+}
+{\sp
+{\sn fFlipH}
+{\sv 0}
+}
+{\sp
+{\sn fFlipV}
+{\sv 0}
+}
+{\sp
+{\sn pib}
+{\sv
+{\pict\picscalex92\picscaley92\piccropl0\piccropr0\piccropt0\piccropb0
+\picw20032\pich2725\picwgoal11357\pichgoal1545\pngblip\bliptag-1891142031
+{\*\blipuid 8f477671d3377e167ce61bb2e9de72f7}
+47494638396110001000d5ff00000000ffffffc0c0c0555f00ffffaafcfcfcf6f6f6eaeaeae6e6e6e4e4e4e3e3e3c2c2c2c1c1c1bcbcbcb5b5b5b3b3b3b0b0b0adadada5a5a5a2a2a2a1a1a19f9f9f9494948a8a8a8888888686867b7b7b6c6c6c5c5c5c4e4e4e4b4b4b4747474646463d3d3d3c3c3c2e2e2e2525251b1b1b18181810101009090906060603030300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021f90401000002002c0000000010001000000684408170482c0a06c8a4728924389f506833b281302a8e6b164b18103024c52111504cca67332102e0042e9a40d9319f8300a343c1200f54e47f7e2a00001e0b0a7d0d728a010d838400261a7c0d94947784252700127e9d159f6c8411140019080ea7a9a85f842122281612b1b3b25d6b1f29291d0fbbbdbc5d5e51c34e4cc64a46c94341003b
+}
+}
+}
+{\sp
+{\sn posrelh}
+{\sv 1}
+}
+{\sp
+{\sn posrelv}
+{\sv 1}
+}
+{\sp
+{\sn fLayoutInCell}
+{\sv 0}
+}
+{\sp
+{\sn fBehindDocument}
+{\sv 1}
+}
+{\sp
+{\sn fLayoutInCell}
+{\sv 0}
+}
+}
+}
+}
+{\rtlch\fcs1 \ab\af1\afs33 \ltrch\fcs0
+\b\f1\fs33\cf1\insrsid15426039 Booking Advice}
+{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid15426039
+\par }
+}
diff --git a/sw/qa/extras/rtftok/rtftok.cxx b/sw/qa/extras/rtftok/rtftok.cxx
index f4a0c4de85ce..a47ca3618d7a 100644
--- a/sw/qa/extras/rtftok/rtftok.cxx
+++ b/sw/qa/extras/rtftok/rtftok.cxx
@@ -33,6 +33,7 @@
#include <com/sun/star/table/BorderLineStyle.hpp>
#include <com/sun/star/text/RelOrientation.hpp>
#include <com/sun/star/text/SizeType.hpp>
+#include <com/sun/star/text/TextContentAnchorType.hpp>
#include <com/sun/star/text/XPageCursor.hpp>
#include <com/sun/star/text/XTextDocument.hpp>
#include <com/sun/star/text/XTextGraphicObjectsSupplier.hpp>
@@ -69,6 +70,7 @@ public:
void testFdo43965();
void testN751020();
void testFdo47326();
+ void testFdo47036();
CPPUNIT_TEST_SUITE(RtfModelTest);
#if !defined(MACOSX) && !defined(WNT)
@@ -84,6 +86,7 @@ public:
CPPUNIT_TEST(testFdo43965);
CPPUNIT_TEST(testN751020);
CPPUNIT_TEST(testFdo47326);
+ CPPUNIT_TEST(testFdo47036);
#endif
CPPUNIT_TEST_SUITE_END();
@@ -398,6 +401,25 @@ void RtfModelTest::testFdo47326()
CPPUNIT_ASSERT_EQUAL(19, getLength());
}
+void RtfModelTest::testFdo47036()
+{
+ load(OUString(RTL_CONSTASCII_USTRINGPARAM("fdo47036.rtf")));
+
+ uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xDraws(xDrawPageSupplier->getDrawPage(), uno::UNO_QUERY);
+ int nAtCharacter = 0;
+ for (int i = 0; i < xDraws->getCount(); ++i)
+ {
+ uno::Reference<beans::XPropertySet> xPropertySet(xDraws->getByIndex(i), uno::UNO_QUERY);
+ text::TextContentAnchorType eValue;
+ xPropertySet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("AnchorType"))) >>= eValue;
+ if (eValue == text::TextContentAnchorType_AT_CHARACTER)
+ nAtCharacter++;
+ }
+ // The image at the document start was ignored.
+ CPPUNIT_ASSERT_EQUAL(1, nAtCharacter);
+}
+
CPPUNIT_TEST_SUITE_REGISTRATION(RtfModelTest);
CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
index c7b70de6bdd9..5daec329cc9c 100644
--- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx
+++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
@@ -3233,6 +3233,12 @@ int RTFDocumentImpl::popState()
Mapper().startShape(xShape);
Mapper().endShape();
}
+ else if (m_aStates.top().nDestinationState == DESTINATION_SHAPE && m_aStates.top().aFrame.inFrame())
+ {
+ m_aStates.top().resetFrame();
+ parBreak();
+ m_bNeedPap = true;
+ }
// See if we need to end a track change
RTFValue::Pointer_t pTrackchange = m_aStates.top().aCharacterSprms.find(NS_ooxml::LN_trackchange);
@@ -3460,6 +3466,11 @@ RTFFrame::RTFFrame(RTFParserState* pParserState)
void RTFFrame::setSprm(Id nId, Id nValue)
{
+ if (m_pParserState->m_pDocumentImpl->getFirstRun())
+ {
+ m_pParserState->m_pDocumentImpl->checkFirstRun();
+ m_pParserState->m_pDocumentImpl->setNeedPar(false);
+ }
switch (nId)
{
case NS_sprm::LN_PDxaWidth: