it) to get informed about the destruction of the child
   model in a sorted model. Removed Freed() method used for
   that so far.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@45627 
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
 {
 public:
     wxDataViewListModelNotifier() { }
 {
 public:
     wxDataViewListModelNotifier() { }
-    virtual ~wxDataViewListModelNotifier() { }
+    virtual ~wxDataViewListModelNotifier() { m_owner = NULL; }
 
     virtual bool RowAppended() = 0;
     virtual bool RowPrepended() = 0;
 
     virtual bool RowAppended() = 0;
     virtual bool RowPrepended() = 0;
     virtual bool ValueChanged( unsigned int col, unsigned int row ) = 0;
     virtual bool RowsReordered( unsigned int *new_order ) = 0;
     virtual bool Cleared() = 0;
     virtual bool ValueChanged( unsigned int col, unsigned int row ) = 0;
     virtual bool RowsReordered( unsigned int *new_order ) = 0;
     virtual bool Cleared() = 0;
-    virtual bool Freed()
-        { m_owner = NULL; return true; }
 
     void SetOwner( wxDataViewListModel *owner ) { m_owner = owner; }
     wxDataViewListModel *GetOwner()             { return m_owner; }
 
     void SetOwner( wxDataViewListModel *owner ) { m_owner = owner; }
     wxDataViewListModel *GetOwner()             { return m_owner; }
     bool ChildCleared();
 
     virtual void Resort();
     bool ChildCleared();
 
     virtual void Resort();
 
 private:
     bool                             m_ascending;
 
 private:
     bool                             m_ascending;
 
 
 wxDataViewListModel::~wxDataViewListModel()
 {
 
 wxDataViewListModel::~wxDataViewListModel()
 {
-    wxList::compatibility_iterator node = m_notifiers.GetFirst();
-    while (node)
-    {
-        wxDataViewListModelNotifier* notifier = (wxDataViewListModelNotifier*) node->GetData();
-        notifier->Freed();
-        node = node->GetNext();
-    }
 }
 
 bool wxDataViewListModel::RowAppended()
 }
 
 bool wxDataViewListModel::RowAppended()
 public:
     wxDataViewSortedListModelNotifier( wxDataViewSortedListModel *model )
         { m_model = model; }
 public:
     wxDataViewSortedListModelNotifier( wxDataViewSortedListModel *model )
         { m_model = model; }
+        
+    ~wxDataViewSortedListModelNotifier()
+        { m_model->DetachChild(); }
 
     virtual bool RowAppended()
         { return m_model->ChildRowAppended(); }
 
     virtual bool RowAppended()
         { return m_model->ChildRowAppended(); }
     virtual bool Cleared()
         { return m_model->ChildCleared(); }
 
     virtual bool Cleared()
         { return m_model->ChildCleared(); }
 
-    virtual bool Freed()
-        { m_model->m_child = NULL; return wxDataViewListModelNotifier::Freed(); }
-
     wxDataViewSortedListModel *m_model;
 };
 
     wxDataViewSortedListModel *m_model;
 };
 
 wxDataViewSortedListModel::~wxDataViewSortedListModel()
 {
     if (m_child)
 wxDataViewSortedListModel::~wxDataViewSortedListModel()
 {
     if (m_child)
-    m_child->RemoveNotifier( m_notifierOnChild );
+        m_child->RemoveNotifier( m_notifierOnChild );
+}
+
+void wxDataViewSortedListModel::DetachChild()
+{
+    m_child = NULL;
 
 {
 public:
     wxGtkDataViewListModelNotifier( GtkWxListStore* gtk_store, wxDataViewListModel *wx_model );
 {
 public:
     wxGtkDataViewListModelNotifier( GtkWxListStore* gtk_store, wxDataViewListModel *wx_model );
+    ~wxGtkDataViewListModelNotifier();
 
     virtual bool RowAppended();
     virtual bool RowPrepended();
 
     virtual bool RowAppended();
     virtual bool RowPrepended();
     virtual bool RowsReordered( unsigned int *new_order );
     virtual bool Cleared();
 
     virtual bool RowsReordered( unsigned int *new_order );
     virtual bool Cleared();
 
-    virtual bool Freed()
-    {
-        m_wx_model = NULL;
-        m_gtk_store = NULL;
-        return wxDataViewListModelNotifier::Freed();
-    }
-
     GtkWxListStore      *m_gtk_store;
     wxDataViewListModel *m_wx_model;
 };
     GtkWxListStore      *m_gtk_store;
     wxDataViewListModel *m_wx_model;
 };
+wxGtkDataViewListModelNotifier::~wxGtkDataViewListModelNotifier()
+{
+    m_wx_model = NULL;
+    m_gtk_store = NULL;
+}
+
 bool wxGtkDataViewListModelNotifier::RowAppended()
 {
     unsigned int pos = m_wx_model->GetRowCount()-1;
 bool wxGtkDataViewListModelNotifier::RowAppended()
 {
     unsigned int pos = m_wx_model->GetRowCount()-1;