summaryrefslogtreecommitdiff
path: root/writerfilter
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@suse.cz>2013-01-14 17:26:35 +0100
committerMiklos Vajna <vmiklos@suse.cz>2013-01-14 17:53:09 +0100
commitd276d3f3ae112a11c8cb5768650d147cbb94275e (patch)
treecb7b147b071078b340bd67fa916b4755ad6c128f /writerfilter
parent34d63e34d9f65ce83564ac310c5857d17147e27f (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.cxx31
-rw-r--r--writerfilter/source/dmapper/DomainMapperTableManager.hxx3
-rw-r--r--writerfilter/source/dmapper/DomainMapper_Impl.hxx2
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 );
}