diff options
author | Miklos Vajna <vmiklos@suse.cz> | 2013-01-14 17:26:35 +0100 |
---|---|---|
committer | Miklos Vajna <vmiklos@suse.cz> | 2013-01-14 17:53:09 +0100 |
commit | d276d3f3ae112a11c8cb5768650d147cbb94275e (patch) | |
tree | cb7b147b071078b340bd67fa916b4755ad6c128f /writerfilter | |
parent | 34d63e34d9f65ce83564ac310c5857d17147e27f (diff) |
fdo#44053 fix this again and this time add a testcase as well
This was about importing RTF tables where different rows had different
number of cells. In the meantime, a better implementation was added for
DOCX, just using that for RTF fixes the import of this bugdoc.
Also fixes a crasher while loading ooo43817-1.rtf.
Change-Id: I0970275272eca7f33a442bd6acc97a4f8d9dabeb
Diffstat (limited to 'writerfilter')
-rw-r--r-- | writerfilter/source/dmapper/DomainMapperTableManager.cxx | 31 | ||||
-rw-r--r-- | writerfilter/source/dmapper/DomainMapperTableManager.hxx | 3 | ||||
-rw-r--r-- | writerfilter/source/dmapper/DomainMapper_Impl.hxx | 2 |
3 files changed, 3 insertions, 33 deletions
diff --git a/writerfilter/source/dmapper/DomainMapperTableManager.cxx b/writerfilter/source/dmapper/DomainMapperTableManager.cxx index afe9d6c829cf..448d6e18fb4d 100644 --- a/writerfilter/source/dmapper/DomainMapperTableManager.cxx +++ b/writerfilter/source/dmapper/DomainMapperTableManager.cxx @@ -41,7 +41,7 @@ using namespace ::com::sun::star; using namespace ::std; -DomainMapperTableManager::DomainMapperTableManager(bool bOOXML, bool bImplicitMerges) : +DomainMapperTableManager::DomainMapperTableManager(bool bOOXML) : m_nRow(0), m_nCell(), m_nGridSpan(1), @@ -51,7 +51,6 @@ DomainMapperTableManager::DomainMapperTableManager(bool bOOXML, bool bImplicitMe m_nHeaderRepeat(0), m_nTableWidth(0), m_bOOXML( bOOXML ), - m_bImplicitMerges(bImplicitMerges), m_bPushCurrentWidth(false), m_pTablePropsHandler( new TablePropertiesHandler( bOOXML ) ) { @@ -532,34 +531,6 @@ void DomainMapperTableManager::endOfRowAction() #endif insertRowProps(pPropMap); } - else if (m_bImplicitMerges && pTableGrid->size()) - { - // More grid than cells definitions? Then take the last ones. - // This feature is used by the RTF implicit horizontal cell merges. - uno::Sequence< text::TableColumnSeparator > aSeparators(m_nCell.back( ) - 1); - text::TableColumnSeparator* pSeparators = aSeparators.getArray(); - - sal_Int16 nSum = 0; - sal_uInt32 nPos = 0; - sal_uInt32 nSizeTableGrid = pTableGrid->size(); - // Ignoring the i=0 case means we assume that the width of the last cell matches the table width - for (sal_uInt32 i = m_nCell.back( ); i > 1 && nSizeTableGrid >= i; i--) - { - nSum += (*pTableGrid.get())[pTableGrid->size() - i]; // Size of the current cell - pSeparators[nPos].Position = nSum * nFullWidthRelative / nFullWidth; // Relative position - pSeparators[nPos].IsVisible = sal_True; - nPos++; - } - - TablePropertyMapPtr pPropMap( new TablePropertyMap ); - pPropMap->Insert( PROP_TABLE_COLUMN_SEPARATORS, false, uno::makeAny( aSeparators ) ); -#ifdef DEBUG_DOMAINMAPPER - dmapper_logger->startElement("rowProperties"); - pPropMap->dumpXml( dmapper_logger ); - dmapper_logger->endElement(); -#endif - insertRowProps(pPropMap); - } else if (pCellWidths->size() > 0) { // If we're here, then the number of cells does not equal to the amount diff --git a/writerfilter/source/dmapper/DomainMapperTableManager.hxx b/writerfilter/source/dmapper/DomainMapperTableManager.hxx index e7965bd05a94..bba5b5e56fd3 100644 --- a/writerfilter/source/dmapper/DomainMapperTableManager.hxx +++ b/writerfilter/source/dmapper/DomainMapperTableManager.hxx @@ -43,7 +43,6 @@ class DomainMapperTableManager : public DomainMapperTableManager_Base_t sal_Int32 m_nHeaderRepeat; //counter of repeated headers - if == -1 then the repeating stops sal_Int32 m_nTableWidth; //might be set directly or has to be calculated from the column positions bool m_bOOXML; - bool m_bImplicitMerges; OUString m_sTableStyleName; OUString m_sTableVertAnchor; PropertyMapPtr m_pTableStyleTextProperies; @@ -62,7 +61,7 @@ class DomainMapperTableManager : public DomainMapperTableManager_Base_t public: - DomainMapperTableManager(bool bOOXML, bool bImplicitMerges); + DomainMapperTableManager(bool bOOXML); virtual ~DomainMapperTableManager(); // use this method to avoid adding the properties for the table diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.hxx b/writerfilter/source/dmapper/DomainMapper_Impl.hxx index 311485f65afd..c8860f66ad84 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.hxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.hxx @@ -587,7 +587,7 @@ public: void appendTableManager( ) { boost::shared_ptr< DomainMapperTableManager > pMngr( - new DomainMapperTableManager( m_eDocumentType == DOCUMENT_OOXML || m_eDocumentType == DOCUMENT_RTF, m_eDocumentType == DOCUMENT_RTF ) ); + new DomainMapperTableManager( m_eDocumentType == DOCUMENT_OOXML || m_eDocumentType == DOCUMENT_RTF ) ); m_aTableManagers.push( pMngr ); } |