summaryrefslogtreecommitdiff
path: root/vcl/source
diff options
context:
space:
mode:
authorArmin Le Grand <alg@apache.org>2013-05-07 09:34:50 +0000
committerCaolán McNamara <caolanm@redhat.com>2013-05-12 15:46:52 +0100
commitf94000bf5be0e1e0f9196306c6de5741707ad7b7 (patch)
tree1f97b554ac28359b137acce77a4d8e9a38a736d9 /vcl/source
parented43421545c86f85b5fc4b9a33be077748fb8487 (diff)
Resolves: #i122241# Made Push/Pop with PUSH_MAPMODE safe...
for mbMap flag and MapMode preservation (cherry picked from commit 664f4d882129c98d502463e08ce601259b85fc8c) Change-Id: Ibe062a01c495ca0e067e9c4399b55fccf65baebe (cherry picked from commit 579a09b817eada81f1ffbfffa38b63bd5ca34165)
Diffstat (limited to 'vcl/source')
-rw-r--r--vcl/source/gdi/outdev.cxx8
-rw-r--r--vcl/source/gdi/outdev6.cxx2
2 files changed, 5 insertions, 5 deletions
diff --git a/vcl/source/gdi/outdev.cxx b/vcl/source/gdi/outdev.cxx
index 7c03af02aed3..4fba08f706da 100644
--- a/vcl/source/gdi/outdev.cxx
+++ b/vcl/source/gdi/outdev.cxx
@@ -105,6 +105,7 @@ struct ImplObjStack
{
ImplObjStack* mpPrev;
MapMode* mpMapMode;
+ bool mbMapActive;
Region* mpClipRegion;
Color* mpLineColor;
Color* mpFillColor;
@@ -2351,10 +2352,8 @@ void OutputDevice::Push( sal_uInt16 nFlags )
pData->meRasterOp = GetRasterOp();
if ( nFlags & PUSH_MAPMODE )
{
- if ( mbMap )
- pData->mpMapMode = new MapMode( maMapMode );
- else
- pData->mpMapMode = NULL;
+ pData->mpMapMode = new MapMode( maMapMode );
+ pData->mbMapActive = mbMap;
}
if ( nFlags & PUSH_CLIPREGION )
{
@@ -2450,6 +2449,7 @@ void OutputDevice::Pop()
SetMapMode( *pData->mpMapMode );
else
SetMapMode();
+ mbMap = pData->mbMapActive;
}
if ( pData->mnFlags & PUSH_CLIPREGION )
ImplSetClipRegion( pData->mpClipRegion );
diff --git a/vcl/source/gdi/outdev6.cxx b/vcl/source/gdi/outdev6.cxx
index 25999533af06..d63ce7ad6bbc 100644
--- a/vcl/source/gdi/outdev6.cxx
+++ b/vcl/source/gdi/outdev6.cxx
@@ -1212,7 +1212,7 @@ void OutputDevice::DrawCheckered(const Point& rPos, const Size& rSize, sal_uInt3
const sal_uInt32 nMaxX(rPos.X() + rSize.Width());
const sal_uInt32 nMaxY(rPos.Y() + rSize.Height());
- Push();
+ Push(PUSH_LINECOLOR|PUSH_FILLCOLOR);
SetLineColor();
for(sal_uInt32 x(0), nX(rPos.X()); nX < nMaxX; x++, nX += nLen)