fix memory leak; allocate the DC before SetFont() is called on the status bar

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58788 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Francesco Montorsi 2009-02-09 00:53:58 +00:00
parent 71b37ee6e4
commit 80255b7eaf
2 changed files with 10 additions and 4 deletions

View File

@ -26,6 +26,7 @@ public:
long style = wxST_SIZEGRIP,
const wxString& name = wxStatusBarNameStr)
{
m_pDC = NULL;
(void)Create(parent, id, style, name);
}

View File

@ -123,6 +123,12 @@ bool wxStatusBar::Create(wxWindow *parent,
SetFieldsCount(1);
SubclassWin(m_hWnd);
// cache the DC instance used by UpdateFieldText:
// NOTE: create the DC before calling InheritAttributes() since
// it may result in a call to our SetFont()
m_pDC = new wxClientDC(this);
InheritAttributes();
SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_MENUBAR));
@ -135,9 +141,6 @@ bool wxStatusBar::Create(wxWindow *parent,
// work correctly, we need to wait until we return to the main loop
PostSizeEventToParent();
// cache the DC instance used by UpdateFieldText
m_pDC = new wxClientDC(this);
return true;
}
@ -147,6 +150,8 @@ wxStatusBar::~wxStatusBar()
// frame is not - otherwise statusbar leaves a hole in the place it used to
// occupy
PostSizeEventToParent();
wxDELETE(m_pDC);
}
bool wxStatusBar::SetFont(const wxFont& font)
@ -154,7 +159,7 @@ bool wxStatusBar::SetFont(const wxFont& font)
if (!wxWindow::SetFont(font))
return false;
m_pDC->SetFont(font);
if (m_pDC) m_pDC->SetFont(font);
return true;
}