summaryrefslogtreecommitdiff
path: root/sw/source/filter/ww8/ww8atr.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sw/source/filter/ww8/ww8atr.cxx')
-rw-r--r--sw/source/filter/ww8/ww8atr.cxx40
1 files changed, 28 insertions, 12 deletions
diff --git a/sw/source/filter/ww8/ww8atr.cxx b/sw/source/filter/ww8/ww8atr.cxx
index f6c40194bf5e..9f1419f75209 100644
--- a/sw/source/filter/ww8/ww8atr.cxx
+++ b/sw/source/filter/ww8/ww8atr.cxx
@@ -3959,25 +3959,25 @@ void WW8AttributeOutput::FormatLRSpace( const SvxLRSpaceItem& rLR )
}
else if ( m_rWW8Export.m_bOutPageDescs ) // PageDescs
{
- sal_uInt16 nLDist, nRDist;
- const SfxPoolItem* pItem = m_rWW8Export.HasItem( RES_BOX );
- if ( pItem )
+ m_pageMargins.nLeft = 0;
+ m_pageMargins.nRight = 0;
+
+ if ( auto pBoxItem = static_cast<const SvxBoxItem*>(m_rWW8Export.HasItem( RES_BOX )) )
{
- nRDist = static_cast<const SvxBoxItem*>(pItem)->CalcLineSpace( SvxBoxItemLine::LEFT, /*bEvenIfNoLine*/true );
- nLDist = static_cast<const SvxBoxItem*>(pItem)->CalcLineSpace( SvxBoxItemLine::RIGHT, /*bEvenIfNoLine*/true );
+ m_pageMargins.nRight = pBoxItem->CalcLineSpace( SvxBoxItemLine::LEFT, /*bEvenIfNoLine*/true );
+ m_pageMargins.nLeft = pBoxItem->CalcLineSpace( SvxBoxItemLine::RIGHT, /*bEvenIfNoLine*/true );
}
- else
- nLDist = nRDist = 0;
- nLDist = nLDist + static_cast<sal_uInt16>(rLR.GetLeft());
- nRDist = nRDist + static_cast<sal_uInt16>(rLR.GetRight());
+
+ m_pageMargins.nLeft += sal::static_int_cast<sal_uInt16>(rLR.GetLeft());
+ m_pageMargins.nRight += sal::static_int_cast<sal_uInt16>(rLR.GetRight());
// sprmSDxaLeft
m_rWW8Export.InsUInt16( NS_sprm::sprmSDxaLeft );
- m_rWW8Export.InsUInt16( nLDist );
+ m_rWW8Export.InsUInt16( m_pageMargins.nLeft );
// sprmSDxaRight
m_rWW8Export.InsUInt16( NS_sprm::sprmSDxaRight );
- m_rWW8Export.InsUInt16( nRDist );
+ m_rWW8Export.InsUInt16( m_pageMargins.nRight );
}
else
{ // normal paragraphs
@@ -4024,6 +4024,7 @@ void WW8AttributeOutput::FormatULSpace( const SvxULSpaceItem& rUL )
// sprmSDyaTop
m_rWW8Export.InsUInt16( NS_sprm::sprmSDyaTop );
m_rWW8Export.InsUInt16( aDistances.dyaTop );
+ m_pageMargins.nTop = aDistances.dyaTop;
if ( aDistances.HasFooter() )
{
@@ -4035,6 +4036,7 @@ void WW8AttributeOutput::FormatULSpace( const SvxULSpaceItem& rUL )
//sprmSDyaBottom
m_rWW8Export.InsUInt16( NS_sprm::sprmSDyaBottom );
m_rWW8Export.InsUInt16( aDistances.dyaBottom );
+ m_pageMargins.nBottom = aDistances.dyaBottom;
}
else
{
@@ -4461,7 +4463,21 @@ void WW8AttributeOutput::FormatBox( const SvxBoxItem& rBox )
&& ( p->GetWidth() != 0 );
}
- m_rWW8Export.Out_SwFormatBox( rBox, bShadow );
+ SvxBoxItem aBox(rBox);
+ if (m_rWW8Export.m_bOutPageDescs)
+ {
+ editeng::WordBorderDistances aDistances;
+ editeng::BorderDistancesToWord(aBox, m_pageMargins, aDistances);
+
+ aBox.SetDistance(aDistances.nTop, SvxBoxItemLine::TOP);
+ aBox.SetDistance(aDistances.nLeft, SvxBoxItemLine::LEFT);
+ aBox.SetDistance(aDistances.nBottom, SvxBoxItemLine::BOTTOM);
+ aBox.SetDistance(aDistances.nRight, SvxBoxItemLine::RIGHT);
+
+ m_bFromEdge = aDistances.bFromEdge;
+ }
+
+ m_rWW8Export.Out_SwFormatBox( aBox, bShadow );
}
}