diff options
author | Kohei Yoshida <kohei.yoshida@collabora.com> | 2014-03-18 16:59:20 -0400 |
---|---|---|
committer | Kohei Yoshida <kohei.yoshida@collabora.com> | 2014-03-18 17:00:51 -0400 |
commit | 2cd1673f41cb5bd8502a9a48a5721244660fe3a0 (patch) | |
tree | f1c41f4a6ef33f277419b19f096b29026538c0d1 /sw | |
parent | 961da51ae28b46c96344be20abd1b5172a3faa3f (diff) |
fdo#75260: Apply the same fix from writer table to character bordering.
And mirror the right and bottom borders while I'm at it. I guess it was
originally meant to.
Change-Id: I408b077c1524d19bbadd6f0b284ce204064eb735
Diffstat (limited to 'sw')
-rw-r--r-- | sw/source/core/layout/paintfrm.cxx | 32 |
1 files changed, 20 insertions, 12 deletions
diff --git a/sw/source/core/layout/paintfrm.cxx b/sw/source/core/layout/paintfrm.cxx index f9428ccc5a6f..107a0e0e3ffd 100644 --- a/sw/source/core/layout/paintfrm.cxx +++ b/sw/source/core/layout/paintfrm.cxx @@ -4965,23 +4965,25 @@ void PaintCharacterBorder( // Init borders, after this initialization top, bottom, right and left means the // absolute position - const boost::optional<editeng::SvxBorderLine> aTopBorder = + boost::optional<editeng::SvxBorderLine> aTopBorder = (bTop ? rFont.GetAbsTopBorder(bVerticalLayout) : boost::none); - const boost::optional<editeng::SvxBorderLine> aBottomBorder = + boost::optional<editeng::SvxBorderLine> aBottomBorder = (bBottom ? rFont.GetAbsBottomBorder(bVerticalLayout) : boost::none); - const boost::optional<editeng::SvxBorderLine> aLeftBorder = + boost::optional<editeng::SvxBorderLine> aLeftBorder = (bLeft ? rFont.GetAbsLeftBorder(bVerticalLayout) : boost::none); - const boost::optional<editeng::SvxBorderLine> aRightBorder = + boost::optional<editeng::SvxBorderLine> aRightBorder = (bRight ? rFont.GetAbsRightBorder(bVerticalLayout) : boost::none); if( aTopBorder ) { + sal_uInt16 nOffset = aTopBorder->GetDistance(); + Point aLeftTop( - aAlignedRect.Left(), - aAlignedRect.Top()); + aAlignedRect.Left() - nOffset, + aAlignedRect.Top() - nOffset); Point aRightBottom( - aAlignedRect.Right(), - aAlignedRect.Top() + aTopBorder.get().GetScaledWidth()); + aAlignedRect.Right() + nOffset, + aAlignedRect.Top() - nOffset + aTopBorder->GetScaledWidth()); lcl_MakeBorderLine( SwRect(aLeftTop, aRightBottom), @@ -4993,6 +4995,8 @@ void PaintCharacterBorder( if( aBottomBorder ) { + aBottomBorder->SetMirrorWidths(true); + Point aLeftTop( aAlignedRect.Left(), aAlignedRect.Bottom() - aBottomBorder.get().GetScaledWidth()); @@ -5010,12 +5014,14 @@ void PaintCharacterBorder( if( aLeftBorder ) { + sal_uInt16 nOffset = aLeftBorder->GetDistance(); + Point aLeftTop( - aAlignedRect.Left(), - aAlignedRect.Top()); + aAlignedRect.Left() - nOffset, + aAlignedRect.Top() - nOffset); Point aRightBottom( - aAlignedRect.Left() + aLeftBorder.get().GetScaledWidth(), - aAlignedRect.Bottom()); + aAlignedRect.Left() - nOffset + aLeftBorder->GetScaledWidth(), + aAlignedRect.Bottom() + nOffset); lcl_MakeBorderLine( SwRect(aLeftTop, aRightBottom), @@ -5027,6 +5033,8 @@ void PaintCharacterBorder( if( aRightBorder ) { + aRightBorder->SetMirrorWidths(true); + Point aLeftTop( aAlignedRect.Right() - aRightBorder.get().GetScaledWidth(), aAlignedRect.Top()); |