diff options
author | László Németh <nemeth@numbertext.org> | 2020-02-04 19:31:41 +0100 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.com> | 2021-03-05 11:04:35 +0100 |
commit | b743f95b8d3b406da3d9b8c9ad017411f1351ad2 (patch) | |
tree | 0eb476aae9b987b7d2b703a8afb531992fd2c4c6 /writerfilter/source/dmapper/PropertyMap.cxx | |
parent | tdf#81100 DOCX import: repeat header according to table style (diff) | |
download | core-b743f95b8d3b406da3d9b8c9ad017411f1351ad2.tar.gz core-b743f95b8d3b406da3d9b8c9ad017411f1351ad2.zip |
tdf#129575 DOCX import: fix table style preference
handling by recognizing docDefault properties
instead of default-value based heuristics.
(cherry picked from commit f15d67442972c5f69c71925a6bfa5aa1a39d54eb)
Conflicts:
sw/qa/extras/ooxmlexport/ooxmlexport13.cxx
sw/qa/extras/ooxmlexport/ooxmlexport6.cxx
writerfilter/source/dmapper/PropertyIds.cxx
writerfilter/source/dmapper/PropertyMap.cxx
writerfilter/source/dmapper/PropertyMap.hxx
writerfilter/source/dmapper/StyleSheetTable.cxx
writerfilter/source/dmapper/StyleSheetTable.hxx
Change-Id: I3bab9d85d77d0e5f1c357121b1caf02cbe4899c4
Diffstat (limited to 'writerfilter/source/dmapper/PropertyMap.cxx')
-rw-r--r-- | writerfilter/source/dmapper/PropertyMap.cxx | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/writerfilter/source/dmapper/PropertyMap.cxx b/writerfilter/source/dmapper/PropertyMap.cxx index 5d51a89e976a..f1448dbd4423 100644 --- a/writerfilter/source/dmapper/PropertyMap.cxx +++ b/writerfilter/source/dmapper/PropertyMap.cxx @@ -189,6 +189,14 @@ uno::Sequence< beans::PropertyValue > PropertyMap::GetPropertyValues( bool bChar return comphelper::containerToSequence( m_aValues ); } +std::vector< PropertyIds > PropertyMap::GetPropertyIds() +{ + std::vector< PropertyIds > aRet; + for ( const auto& rPropPair : m_vMap ) + aRet.push_back( rPropPair.first ); + return aRet; +} + #ifdef DEBUG_WRITERFILTER static void lcl_AnyToTag( const uno::Any& rAny ) { @@ -227,7 +235,7 @@ static void lcl_AnyToTag( const uno::Any& rAny ) } #endif -void PropertyMap::Insert( PropertyIds eId, const uno::Any& rAny, bool bOverwrite, GrabBagType i_GrabBagType ) +void PropertyMap::Insert( PropertyIds eId, const uno::Any& rAny, bool bOverwrite, GrabBagType i_GrabBagType, bool bDocDefault ) { #ifdef DEBUG_WRITERFILTER const OUString& rInsert = getPropertyName(eId); @@ -239,7 +247,7 @@ void PropertyMap::Insert( PropertyIds eId, const uno::Any& rAny, bool bOverwrite #endif if ( !bOverwrite ) - m_vMap.insert(std::make_pair(eId, PropValue(rAny, i_GrabBagType))); + m_vMap.insert(std::make_pair(eId, PropValue(rAny, i_GrabBagType, bDocDefault))); else m_vMap[eId] = PropValue(rAny, i_GrabBagType); @@ -268,6 +276,15 @@ bool PropertyMap::isSet( PropertyIds eId) const return m_vMap.find( eId ) != m_vMap.end(); } +bool PropertyMap::isDocDefault( PropertyIds eId ) const +{ + std::map< PropertyIds, PropValue >::const_iterator aIter = m_vMap.find( eId ); + if ( aIter == m_vMap.end() ) + return false; + else + return aIter->second.getIsDocDefault(); +} + #ifdef DEBUG_WRITERFILTER void PropertyMap::dumpXml() const { @@ -324,7 +341,12 @@ void PropertyMap::InsertProps( const PropertyMapPtr& rMap, const bool bOverwrite for ( const auto& rPropPair : rMap->m_vMap ) { if ( bOverwrite || !m_vMap.count(rPropPair.first) ) - m_vMap[rPropPair.first] = rPropPair.second; + { + if ( !bOverwrite && !rPropPair.second.getIsDocDefault() ) + m_vMap.insert(std::make_pair(rPropPair.first, PropValue(rPropPair.second.getValue(), rPropPair.second.getGrabBagType(), true))); + else + m_vMap[rPropPair.first] = rPropPair.second; + } } insertTableProperties( rMap.get(), bOverwrite ); |