diff options
Diffstat (limited to 'writerfilter/source/dmapper/DomainMapperTableManager.cxx')
-rw-r--r-- | writerfilter/source/dmapper/DomainMapperTableManager.cxx | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/writerfilter/source/dmapper/DomainMapperTableManager.cxx b/writerfilter/source/dmapper/DomainMapperTableManager.cxx index f4d025739915..618ca603efe6 100644 --- a/writerfilter/source/dmapper/DomainMapperTableManager.cxx +++ b/writerfilter/source/dmapper/DomainMapperTableManager.cxx @@ -57,6 +57,7 @@ DomainMapperTableManager::DomainMapperTableManager() : m_bPushCurrentWidth(false), m_bTableSizeTypeInserted(false), m_nLayoutType(0), + m_aParagraphsToEndTable(), m_pTablePropsHandler(new TablePropertiesHandler()) { m_pTablePropsHandler->SetTableManager( this ); @@ -430,6 +431,11 @@ TablePositionHandler* DomainMapperTableManager::getCurrentTableRealPosition() return nullptr; } +TableParagraphVectorPtr DomainMapperTableManager::getCurrentParagraphs( ) +{ + return m_aParagraphsToEndTable.top( ); +} + void DomainMapperTableManager::setIsInShape(bool bIsInShape) { m_bIsInShape = bIsInShape; @@ -446,6 +452,12 @@ void DomainMapperTableManager::startLevel( ) oCurrentWidth = m_aCellWidths.back()->back(); m_aCellWidths.back()->pop_back(); } + boost::optional<TableParagraph> oParagraph; + if (getTableDepthDifference() > 0 && !m_aParagraphsToEndTable.empty() && !m_aParagraphsToEndTable.top()->empty()) + { + oParagraph = m_aParagraphsToEndTable.top()->back(); + m_aParagraphsToEndTable.top()->pop_back(); + } IntVectorPtr pNewGrid( new vector<sal_Int32> ); IntVectorPtr pNewSpans( new vector<sal_Int32> ); @@ -464,10 +476,14 @@ void DomainMapperTableManager::startLevel( ) m_aGridBefore.push_back( 0 ); m_nTableWidth = 0; m_nLayoutType = 0; + TableParagraphVectorPtr pNewParagraphs( new vector<TableParagraph> ); + m_aParagraphsToEndTable.push( pNewParagraphs ); // And push it back to the right level. if (oCurrentWidth) m_aCellWidths.back()->push_back(*oCurrentWidth); + if (oParagraph) + m_aParagraphsToEndTable.top()->push_back(*oParagraph); } void DomainMapperTableManager::endLevel( ) @@ -511,6 +527,7 @@ void DomainMapperTableManager::endLevel( ) // Pop back the table position after endLevel as it's used // in the endTable method called in endLevel. m_aTablePositions.pop_back(); + m_aParagraphsToEndTable.pop(); } void DomainMapperTableManager::endOfCellAction() |