From: Robert Roebling Date: Tue, 27 May 2008 08:53:48 +0000 (+0000) Subject: Use wxWindowRef to hold pointer to default button X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/3e040a2981549269a52264030a97dcb40e32ad5e?ds=inline Use wxWindowRef to hold pointer to default button git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@53773 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/include/wx/toplevel.h b/include/wx/toplevel.h index ed8b2e9f5f..3a63759cbc 100644 --- a/include/wx/toplevel.h +++ b/include/wx/toplevel.h @@ -21,6 +21,7 @@ #include "wx/nonownedwnd.h" #include "wx/iconbndl.h" #include "wx/containr.h" +#include "wx/weakref.h" // the default names for various classes extern WXDLLIMPEXP_DATA_CORE(const char) wxFrameNameStr[]; @@ -288,19 +289,15 @@ protected: static int WidthDefault(int w) { return w == wxDefaultCoord ? GetDefaultSize().x : w; } static int HeightDefault(int h) { return h == wxDefaultCoord ? GetDefaultSize().y : h; } - // reset m_winDefault and m_winTmpDefault if they point to the window being - // destroyed - void OnChildDestroy(wxWindowDestroyEvent& event); - // the frame icon wxIconBundle m_icons; // a default window (usually a button) or NULL - wxWindow *m_winDefault; + wxWindowRef m_winDefault; // a temporary override of m_winDefault, use the latter if NULL - wxWindow *m_winTmpDefault; + wxWindowRef m_winTmpDefault; DECLARE_NO_COPY_CLASS(wxTopLevelWindowBase) DECLARE_EVENT_TABLE() diff --git a/src/common/toplvcmn.cpp b/src/common/toplvcmn.cpp index a24634f669..0bd8d637cb 100644 --- a/src/common/toplvcmn.cpp +++ b/src/common/toplvcmn.cpp @@ -39,7 +39,6 @@ BEGIN_EVENT_TABLE(wxTopLevelWindowBase, wxWindow) EVT_CLOSE(wxTopLevelWindowBase::OnCloseWindow) EVT_SIZE(wxTopLevelWindowBase::OnSize) - EVT_WINDOW_DESTROY(wxTopLevelWindowBase::OnChildDestroy) WX_EVENT_TABLE_CONTROL_CONTAINER(wxTopLevelWindowBase) END_EVENT_TABLE() @@ -59,17 +58,12 @@ wxTopLevelWindowBase::wxTopLevelWindowBase() { // Unlike windows, top level windows are created hidden by default. m_isShown = false; - m_winDefault = - m_winTmpDefault = NULL; WX_INIT_CONTROL_CONTAINER(); } wxTopLevelWindowBase::~wxTopLevelWindowBase() { - m_winDefault = - m_winTmpDefault = NULL; - // don't let wxTheApp keep any stale pointers to us if ( wxTheApp && wxTheApp->GetTopWindow() == this ) wxTheApp->SetTopWindow(NULL); @@ -422,17 +416,6 @@ void wxTopLevelWindowBase::OnCloseWindow(wxCloseEvent& WXUNUSED(event)) Destroy(); } -void wxTopLevelWindowBase::OnChildDestroy(wxWindowDestroyEvent& event) -{ - event.Skip(); - - wxWindow * const win = event.GetWindow(); - if ( win == m_winDefault ) - m_winDefault = NULL; - if ( win == m_winTmpDefault ) - m_winTmpDefault = NULL; -} - bool wxTopLevelWindowBase::SendIconizeEvent(bool iconized) { wxIconizeEvent event(GetId(), iconized);