sw/qa/extras/rtfimport/data/fdo57678.rtf | 34 +++++++++++++++++++++++++ sw/qa/extras/rtfimport/rtfimport.cxx | 10 +++++++ writerfilter/source/rtftok/rtfdocumentimpl.cxx | 12 +++++--- 3 files changed, 52 insertions(+), 4 deletions(-)
New commits: commit f9c0deef40a59095c6132b80eb5b21835d3e3a9c Author: Miklos Vajna <vmik...@suse.cz> Date: Mon Dec 24 15:06:15 2012 +0100 fdo#57678 fix import of RTF_PARD between RTF_CELL and RTF_ROW (cherry picked from commit c58981ca3dbf65c998acf979fb104534991b08c4) diff --git a/sw/qa/extras/rtfimport/data/fdo57678.rtf b/sw/qa/extras/rtfimport/data/fdo57678.rtf new file mode 100644 index 0000000..e0a26cd --- /dev/null +++ b/sw/qa/extras/rtfimport/data/fdo57678.rtf @@ -0,0 +1,34 @@ +{\rtf\ansi\deff0 +{\fonttbl{\f0 Times New Roman;}} +{\colortbl;\red0\green0\blue0;} +{\info +} +\paperw11907 \paperh16443 \deftab1298 \margl1701 \margr1701 \margt567 \margb1134 \pgnstart1\ftnnar \aftnnrlc \ftnstart1 \aftnstart1 +\trowd\trowd\cellx1701\cellx3402 + +\intbl\itap1 +\qc{Cell 1:1} +\cell\pard + +\intbl\itap1 +\qc{Cell 1:2} +\cell\pard + +\row +\pard\itap0 +\par \trowd\trowd \cellx1701\cellx3402\cellx5103\cellx6804 + +\intbl\itap1 +{cell 1:1} +\cell\pard + +{{\~}}\cell\pard + +{{\~}}\cell\pard + +{{\~}}\cell\pard + +\row +\pard\itap0 + +} diff --git a/sw/qa/extras/rtfimport/rtfimport.cxx b/sw/qa/extras/rtfimport/rtfimport.cxx index da5794f..513ea2c 100644 --- a/sw/qa/extras/rtfimport/rtfimport.cxx +++ b/sw/qa/extras/rtfimport/rtfimport.cxx @@ -131,6 +131,7 @@ public: void testFdo49934(); void testFdo57886(); void testFdo58076(); + void testFdo57678(); CPPUNIT_TEST_SUITE(Test); #if !defined(MACOSX) && !defined(WNT) @@ -212,6 +213,7 @@ void Test::run() {"fdo49934.rtf", &Test::testFdo49934}, {"fdo57886.rtf", &Test::testFdo57886}, {"fdo58076.rtf", &Test::testFdo58076}, + {"fdo57678.rtf", &Test::testFdo57678}, }; for (unsigned int i = 0; i < SAL_N_ELEMENTS(aMethods); ++i) { @@ -978,6 +980,14 @@ void Test::testFdo58076() CPPUNIT_ASSERT_EQUAL(sal_Int32(635), getProperty<sal_Int32>(xStyle, "BottomMargin")); } +void Test::testFdo57678() +{ + // Paragraphs of the two tables were not converted to tables. + uno::Reference<text::XTextTablesSupplier> xTextTablesSupplier(mxComponent, uno::UNO_QUERY); + uno::Reference<container::XIndexAccess> xIndexAccess(xTextTablesSupplier->getTextTables(), uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(sal_Int32(2), xIndexAccess->getCount()); +} + CPPUNIT_TEST_SUITE_REGISTRATION(Test); CPPUNIT_PLUGIN_IMPLEMENT(); diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx index 19b02519..2fae8b4 100644 --- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx +++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx @@ -2077,11 +2077,15 @@ int RTFDocumentImpl::dispatchFlag(RTFKeyword nKeyword) case RTF_PARD: if (m_bHadPicture) dispatchSymbol(RTF_PAR); - m_aStates.top().aParagraphSprms = m_aDefaultState.aParagraphSprms; - m_aStates.top().aParagraphAttributes = m_aDefaultState.aParagraphAttributes; + // \pard is allowed between \cell and \row, but in that case it should not reset the fact that we're inside a table. + if (m_aStates.top().nCells == 0) + { + m_aStates.top().aParagraphSprms = m_aDefaultState.aParagraphSprms; + m_aStates.top().aParagraphAttributes = m_aDefaultState.aParagraphAttributes; + if (m_aStates.top().nDestinationState != DESTINATION_SHAPETEXT) + m_pCurrentBuffer = 0; + } m_aStates.top().resetFrame(); - if (m_aStates.top().nDestinationState != DESTINATION_SHAPETEXT) - m_pCurrentBuffer = 0; break; case RTF_SECTD: m_aStates.top().aSectionSprms = m_aDefaultState.aSectionSprms; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits