]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/persist/window.h
Don't define __STRICT_ANSI__, we should build both with and without it.
[wxWidgets.git] / include / wx / persist / window.h
index 692e143a139e3f6942322c7e849fdfffd8a148b7..279e11d26de7bea1f0d1f27a56ef65add1baa3df 100644 (file)
@@ -3,7 +3,6 @@
 // Purpose:     wxPersistentWindow declaration
 // Author:      Vadim Zeitlin
 // Created:     2009-01-23
-// RCS-ID:      $Id$
 // Copyright:   (c) 2009 Vadim Zeitlin <vadim@wxwidgets.org>
 // Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
 
 // type-independent part of wxPersistentWindow
 class wxPersistentWindowBase :
-#if wxEVENTS_COMPATIBILITY_2_8
-    // in compatibility mode we need to derive from wxEvtHandler to be able to
-    // handle events
-    public wxEvtHandler ,
-#endif
+    wxBIND_OR_CONNECT_HACK_BASE_CLASS
     public wxPersistentObject
 {
 public:
     wxPersistentWindowBase(wxWindow *win)
         : wxPersistentObject(win)
     {
-        win->Connect
-             (
-                wxEVT_DESTROY,
-                wxWindowDestroyEventHandler(
-                    wxPersistentWindowBase::HandleDestroy),
-                NULL,
-                this
-             );
+        wxBIND_OR_CONNECT_HACK(win, wxEVT_DESTROY, wxWindowDestroyEventHandler,
+                               wxPersistentWindowBase::HandleDestroy, this);
     }
 
     virtual wxString GetName() const
@@ -60,11 +49,16 @@ private:
     {
         event.Skip();
 
-        // this will delete this object itself
-        wxPersistenceManager::Get().SaveAndUnregister(GetWindow());
+        // only react to the destruction of this object itself, not of any of
+        // its children
+        if ( event.GetEventObject() == GetObject() )
+        {
+            // this will delete this object itself
+            wxPersistenceManager::Get().SaveAndUnregister(GetWindow());
+        }
     }
 
-    DECLARE_NO_COPY_CLASS(wxPersistentWindowBase)
+    wxDECLARE_NO_COPY_CLASS(wxPersistentWindowBase);
 };
 
 template <class T>