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:
@@ -26,6 +26,7 @@ public:
|
|||||||
long style = wxST_SIZEGRIP,
|
long style = wxST_SIZEGRIP,
|
||||||
const wxString& name = wxStatusBarNameStr)
|
const wxString& name = wxStatusBarNameStr)
|
||||||
{
|
{
|
||||||
|
m_pDC = NULL;
|
||||||
(void)Create(parent, id, style, name);
|
(void)Create(parent, id, style, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -123,6 +123,12 @@ bool wxStatusBar::Create(wxWindow *parent,
|
|||||||
|
|
||||||
SetFieldsCount(1);
|
SetFieldsCount(1);
|
||||||
SubclassWin(m_hWnd);
|
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();
|
InheritAttributes();
|
||||||
|
|
||||||
SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_MENUBAR));
|
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
|
// work correctly, we need to wait until we return to the main loop
|
||||||
PostSizeEventToParent();
|
PostSizeEventToParent();
|
||||||
|
|
||||||
// cache the DC instance used by UpdateFieldText
|
|
||||||
m_pDC = new wxClientDC(this);
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -147,6 +150,8 @@ wxStatusBar::~wxStatusBar()
|
|||||||
// frame is not - otherwise statusbar leaves a hole in the place it used to
|
// frame is not - otherwise statusbar leaves a hole in the place it used to
|
||||||
// occupy
|
// occupy
|
||||||
PostSizeEventToParent();
|
PostSizeEventToParent();
|
||||||
|
|
||||||
|
wxDELETE(m_pDC);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxStatusBar::SetFont(const wxFont& font)
|
bool wxStatusBar::SetFont(const wxFont& font)
|
||||||
@@ -154,7 +159,7 @@ bool wxStatusBar::SetFont(const wxFont& font)
|
|||||||
if (!wxWindow::SetFont(font))
|
if (!wxWindow::SetFont(font))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
m_pDC->SetFont(font);
|
if (m_pDC) m_pDC->SetFont(font);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user