diff options
author | aqcoder <flw.aquarius@gmail.com> | 2015-12-17 21:22:34 +0800 |
---|---|---|
committer | jan iversen <jani@documentfoundation.org> | 2015-12-24 19:45:21 +0000 |
commit | d3e57ccf2e56a75bd4f004de53793f1742e34bc4 (patch) | |
tree | 53fce7596fdfbde1d68ba809ef834137e7c3adcd /sw/source/filter/xml | |
parent | fc47ee6fbf67781acd07549c40a75c9272572085 (diff) |
tdf#96412 Fix export text table cell UserDefinedAttributes to xml.
It also export to different Fmt when only have the difference of
UserDefinedAttributes for the text table cell.
Change-Id: I022b627926870b883eea363567a34b61c34ab353
Reviewed-on: https://gerrit.libreoffice.org/20765
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: jan iversen <jani@documentfoundation.org>
Diffstat (limited to 'sw/source/filter/xml')
-rw-r--r-- | sw/source/filter/xml/xmltble.cxx | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/sw/source/filter/xml/xmltble.cxx b/sw/source/filter/xml/xmltble.cxx index 227ea830d9b2..6b891a3710a6 100644 --- a/sw/source/filter/xml/xmltble.cxx +++ b/sw/source/filter/xml/xmltble.cxx @@ -29,6 +29,7 @@ #include <svl/zforlist.hxx> #include <editeng/brushitem.hxx> #include <editeng/boxitem.hxx> +#include <editeng/xmlcnitm.hxx> #include <fmtrowsplt.hxx> #include <editeng/frmdiritem.hxx> #include <list> @@ -312,6 +313,7 @@ bool SwXMLTableFrameFormatsSort_Impl::AddCell( SwFrameFormat& rFrameFormat, const SvxBoxItem *pBox = nullptr; const SwTableBoxNumFormat *pNumFormat = nullptr; const SvxFrameDirectionItem *pFrameDir = nullptr; + const SvXMLAttrContainerItem *pAttCnt = nullptr; const SfxItemSet& rItemSet = rFrameFormat.GetAttrSet(); const SfxPoolItem *pItem; @@ -331,9 +333,12 @@ bool SwXMLTableFrameFormatsSort_Impl::AddCell( SwFrameFormat& rFrameFormat, if ( SfxItemState::SET == rItemSet.GetItemState( RES_FRAMEDIR, false, &pItem ) ) pFrameDir = static_cast<const SvxFrameDirectionItem *>(pItem); + if ( SfxItemState::SET == rItemSet.GetItemState( RES_UNKNOWNATR_CONTAINER, + false, &pItem ) ) + pAttCnt = static_cast<const SvXMLAttrContainerItem *>(pItem); // empty styles have not to be exported - if( !pVertOrient && !pBrush && !pBox && !pNumFormat && !pFrameDir ) + if( !pVertOrient && !pBrush && !pBox && !pNumFormat && !pFrameDir && !pAttCnt ) return false; // order is: -/-/-/num, @@ -351,6 +356,7 @@ bool SwXMLTableFrameFormatsSort_Impl::AddCell( SwFrameFormat& rFrameFormat, const SvxBoxItem *pTestBox = nullptr; const SwTableBoxNumFormat *pTestNumFormat = nullptr; const SvxFrameDirectionItem *pTestFrameDir = nullptr; + const SvXMLAttrContainerItem *pTestAttCnt = nullptr; const SwFrameFormat* pTestFormat = *i; const SfxItemSet& rTestSet = pTestFormat->GetAttrSet(); if( SfxItemState::SET == rTestSet.GetItemState( RES_VERT_ORIENT, false, @@ -424,6 +430,21 @@ bool SwXMLTableFrameFormatsSort_Impl::AddCell( SwFrameFormat& rFrameFormat, } + if ( SfxItemState::SET == rTestSet.GetItemState( RES_UNKNOWNATR_CONTAINER, + false, &pItem ) ) + { + if( !pAttCnt ) + break; + + pTestAttCnt = static_cast<const SvXMLAttrContainerItem *>(pItem); + } + else + { + if ( pAttCnt ) + continue; + + } + if( pVertOrient && pVertOrient->GetVertOrient() != pTestVertOrient->GetVertOrient() ) continue; @@ -440,6 +461,9 @@ bool SwXMLTableFrameFormatsSort_Impl::AddCell( SwFrameFormat& rFrameFormat, if( pFrameDir && pFrameDir->GetValue() != pTestFrameDir->GetValue() ) continue; + if( pAttCnt && ( *pAttCnt != *pTestAttCnt ) ) + continue; + // found! rFrameFormat.SetName( pTestFormat->GetName() ); bInsert = false; |