diff options
author | Miklos Vajna <vmiklos@suse.cz> | 2012-06-11 17:04:37 +0200 |
---|---|---|
committer | Miklos Vajna <vmiklos@suse.cz> | 2012-06-11 17:04:48 +0200 |
commit | 61ba6e49f5bbadaf1334ce71459647c3d0a3a37d (patch) | |
tree | ac029b49a889648c405878a68a49cfae38c7ab64 /writerfilter | |
parent | 00c23c39f512090cc70e975a27f3636d7b14f29c (diff) |
fdo#49659 dmapper: handle tables in substreams
Change-Id: I4c81eb1ec57bda2b5ce65b19de998bab2dfb6c3c
Diffstat (limited to 'writerfilter')
-rw-r--r-- | writerfilter/source/dmapper/DomainMapper.cxx | 3 | ||||
-rw-r--r-- | writerfilter/source/dmapper/DomainMapper_Impl.cxx | 4 | ||||
-rw-r--r-- | writerfilter/source/dmapper/DomainMapper_Impl.hxx | 7 |
3 files changed, 12 insertions, 2 deletions
diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx index 5c4537359ec3..9f3d1151ac12 100644 --- a/writerfilter/source/dmapper/DomainMapper.cxx +++ b/writerfilter/source/dmapper/DomainMapper.cxx @@ -3491,6 +3491,9 @@ void DomainMapper::lcl_table(Id name, writerfilter::Reference<Table>::Pointer_t void DomainMapper::lcl_substream(Id rName, ::writerfilter::Reference<Stream>::Pointer_t ref) { m_pImpl->appendTableManager( ); + // Appending a TableManager resets its TableHandler, so we need to append + // that as well, or tables won't be imported properly in headers/footers. + m_pImpl->appendTableHandler( ); m_pImpl->getTableManager().startLevel(); //import of page header/footer diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx index 08e189b0823f..546613a97034 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx @@ -216,9 +216,9 @@ DomainMapper_Impl::DomainMapper_Impl( //todo: does it make sense to set the body text as static text interface? uno::Reference< text::XTextAppendAndConvert > xBodyTextAppendAndConvert( m_xBodyText, uno::UNO_QUERY ); - TableDataHandler_t::Pointer_t pTableHandler + m_pTableHandler.reset (new DomainMapperTableHandler(xBodyTextAppendAndConvert, *this)); - getTableManager( ).setHandler(pTableHandler); + getTableManager( ).setHandler(m_pTableHandler); getTableManager( ).startLevel(); m_bUsingEnhancedFields = lcl_IsUsingEnhancedFields( uno::Reference< lang::XMultiServiceFactory >( m_xComponentContext->getServiceManager(), uno::UNO_QUERY ) ); diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.hxx b/writerfilter/source/dmapper/DomainMapper_Impl.hxx index 1dc1ebc67e1c..07f69343fb4d 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.hxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.hxx @@ -311,6 +311,7 @@ private: // TableManagers are stacked: one for each stream to avoid any confusion std::stack< boost::shared_ptr< DomainMapperTableManager > > m_aTableManagers; + TableDataHandler_t::Pointer_t m_pTableHandler; //each context needs a stack of currently used attributes FIB m_aFIB; @@ -556,6 +557,12 @@ public: m_aTableManagers.push( pMngr ); } + void appendTableHandler( ) + { + if (m_pTableHandler.get()) + m_aTableManagers.top()->setHandler(m_pTableHandler); + } + void popTableManager( ) { if ( m_aTableManagers.size( ) > 0 ) |