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:
parent
71b37ee6e4
commit
80255b7eaf
@ -26,6 +26,7 @@ public:
|
||||
long style = wxST_SIZEGRIP,
|
||||
const wxString& name = wxStatusBarNameStr)
|
||||
{
|
||||
m_pDC = NULL;
|
||||
(void)Create(parent, id, style, name);
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user