Don't use invalid pen in wxDCImpl::DoGradientFillConcentric().

The old code stored the original colour of m_pen before changing it and
restored it on exit but this didn't work if the pen was invalid to start with.

Just store the pen itself instead, this works in any case.

Closes #11235.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62143 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2009-09-26 13:31:41 +00:00
parent bbb8a1aad6
commit 1d8cdcf2e3

View File

@ -30,6 +30,7 @@
#include "wx/dcscreen.h"
#include "wx/dcprint.h"
#include "wx/prntbase.h"
#include "wx/scopeguard.h"
#ifndef WX_PRECOMP
#include "wx/math.h"
@ -1054,8 +1055,9 @@ void wxDCImpl::DoGradientFillConcentric(const wxRect& rect,
const wxColour& destColour,
const wxPoint& circleCenter)
{
//save the old pen color
wxColour oldPenColour = m_pen.GetColour();
// save the old pen and ensure it is restored on exit
const wxPen penOrig = m_pen;
wxON_BLOCK_EXIT_SET(m_pen, penOrig);
wxUint8 nR1 = destColour.Red();
wxUint8 nG1 = destColour.Green();
@ -1100,12 +1102,10 @@ void wxDCImpl::DoGradientFillConcentric(const wxRect& rect,
nB = (wxUint8)(nB1 + ((nB2 - nB1) * nGradient / 100));
//set the pixel
m_pen.SetColour(wxColour(nR,nG,nB));
m_pen = wxColour(nR,nG,nB);
DoDrawPoint(x + rect.GetLeft(), y + rect.GetTop());
}
}
//return old pen color
m_pen.SetColour(oldPenColour);
}
void wxDCImpl::InheritAttributes(wxWindow *win)