summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2012-03-23 14:08:31 +0100
committerCédric Bosdonnat <cedric.bosdonnat@free.fr>2012-04-24 13:37:02 +0200
commit1a34e28c9f80542bb8c0b120421f7a02832ad038 (patch)
tree95239332055a96a8472d6c98efd3aad2f62838c8
parent9d646e9e331ca23853ec04d044ae8c1ea42346e3 (diff)
fdo#42750 fdo#45562 fdo#47717: border paint ordering:
Paint borders after subsidiary lines and hell layer, but before heaven layer. (cherry picked from commit 1024c172a5bfb3d85a86fcf7a046aa2b03950edd) Signed-off-by: Caolán McNamara <caolanm@redhat.com> Signed-off-by: Miklos Vajna <vmiklos@suse.cz> Signed-off-by: Cédric Bosdonnat <cedric.bosdonnat@free.fr>
-rwxr-xr-xsw/source/core/layout/paintfrm.cxx27
1 files changed, 17 insertions, 10 deletions
diff --git a/sw/source/core/layout/paintfrm.cxx b/sw/source/core/layout/paintfrm.cxx
index 69e32ff3978b..435571a01db2 100755
--- a/sw/source/core/layout/paintfrm.cxx
+++ b/sw/source/core/layout/paintfrm.cxx
@@ -231,9 +231,12 @@ public:
{
m_Lines.push_back(xLine);
}
- drawinglayer::primitive2d::Primitive2DSequence GetBorderLines() const
+ drawinglayer::primitive2d::Primitive2DSequence GetBorderLines_Clear()
{
- return m_Lines.getAsConstList();
+ ::comphelper::SequenceAsVector<
+ ::drawinglayer::primitive2d::Primitive2DReference> lines;
+ ::std::swap(m_Lines, lines);
+ return lines.getAsConstList();
}
};
@@ -3002,6 +3005,16 @@ SwRootFrm::Paint(SwRect const& rRect, SwPrintData const*const pPrintData) const
}
pLines->PaintLines( pSh->GetOut() );
+ if ( pSh->GetWin() )
+ {
+ pSubsLines->PaintSubsidiary( pSh->GetOut(), pLines );
+ DELETEZ( pSubsLines );
+ DELETEZ( pSpecSubsLines );
+ }
+ // fdo#42750: delay painting these until after subsidiary lines
+ // fdo#45562: delay painting these until after hell layer
+ // fdo#47717: but do it before heaven layer
+ ProcessPrimitives(g_pBorderLines->GetBorderLines_Clear());
if ( pSh->Imp()->HasDrawView() )
{
@@ -3018,14 +3031,8 @@ SwRootFrm::Paint(SwRect const& rRect, SwPrintData const*const pPrintData) const
if ( bExtraData )
pPage->RefreshExtraData( aPaintRect );
- if ( pSh->GetWin() )
- {
- pSubsLines->PaintSubsidiary( pSh->GetOut(), pLines );
- DELETEZ( pSubsLines );
- DELETEZ( pSpecSubsLines );
- }
- // fdo#42750: delay painting these until after subsidiary lines
- ProcessPrimitives(g_pBorderLines->GetBorderLines());
+ // have to paint frame borders added in heaven layer here...
+ ProcessPrimitives(g_pBorderLines->GetBorderLines_Clear());
DELETEZ(g_pBorderLines);
pVout->Leave();