]> git.saurik.com Git - wxWidgets.git/commitdiff
Use wxWindowRef to hold pointer to default button
authorRobert Roebling <robert@roebling.de>
Tue, 27 May 2008 08:53:48 +0000 (08:53 +0000)
committerRobert Roebling <robert@roebling.de>
Tue, 27 May 2008 08:53:48 +0000 (08:53 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@53773 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/toplevel.h
src/common/toplvcmn.cpp

index ed8b2e9f5ff8ae22e1b7692f62eb63109f7798a3..3a63759cbc834435de146d39cd317499f153b596 100644 (file)
@@ -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()
index a24634f669a69df30f016989ad568fc96c57e663..0bd8d637cbfd693e162fd9a19a282b869a9c9d7a 100644 (file)
@@ -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);