summaryrefslogtreecommitdiff
path: root/sw/source/filter/xml
diff options
context:
space:
mode:
authoraqcoder <flw.aquarius@gmail.com>2015-12-17 21:22:34 +0800
committerjan iversen <jani@documentfoundation.org>2015-12-24 19:45:21 +0000
commitd3e57ccf2e56a75bd4f004de53793f1742e34bc4 (patch)
tree53fce7596fdfbde1d68ba809ef834137e7c3adcd /sw/source/filter/xml
parentfc47ee6fbf67781acd07549c40a75c9272572085 (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.cxx26
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;