summaryrefslogtreecommitdiffstats
path: root/writerfilter/source/dmapper/PropertyMap.cxx
diff options
context:
space:
mode:
authorLászló Németh <nemeth@numbertext.org>2020-02-04 19:31:41 +0100
committerMiklos Vajna <vmiklos@collabora.com>2021-03-05 11:04:35 +0100
commitb743f95b8d3b406da3d9b8c9ad017411f1351ad2 (patch)
tree0eb476aae9b987b7d2b703a8afb531992fd2c4c6 /writerfilter/source/dmapper/PropertyMap.cxx
parenttdf#81100 DOCX import: repeat header according to table style (diff)
downloadcore-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.cxx28
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 );