]> git.saurik.com Git - wxWidgets.git/commitdiff
Fix client data handling: delete client data for all items when a
authorMattia Barbon <mbarbon@cpan.org>
Sun, 2 Feb 2003 21:00:06 +0000 (21:00 +0000)
committerMattia Barbon <mbarbon@cpan.org>
Sun, 2 Feb 2003 21:00:06 +0000 (21:00 +0000)
wxChoice is deleted, delete client data for an item when that item is
deleted.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@19084 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/mac/carbon/choice.cpp
src/mac/carbon/combobox.cpp
src/mac/choice.cpp
src/mac/combobox.cpp

index 46e08be0d526ac7bdb271b81fa2b5732745dab15..ac29f3125b9256ec8c3d6bdbc09b7769f37a2f0d 100644 (file)
@@ -21,7 +21,15 @@ IMPLEMENT_DYNAMIC_CLASS(wxChoice, wxControl)
 extern MenuHandle NewUniqueMenu() ;
 wxChoice::~wxChoice()
 {
-       // DeleteMenu( m_macPopUpMenuId ) ;
+    if ( HasClientObjectData() )
+    {
+        size_t i, max = GetCount();
+
+        for ( i = 0; i < max; ++i )
+            delete GetClientObject(i);
+    }
+
+        // DeleteMenu( m_macPopUpMenuId ) ;
        // DisposeMenu( m_macPopUpMenuHandle ) ;
 }
 bool wxChoice::Create(wxWindow *parent, wxWindowID id,
@@ -221,4 +229,4 @@ wxSize wxChoice::DoGetBestSize() const
            
        }
     return wxSize(lbWidth, lbHeight);
-}
\ No newline at end of file
+}
index 664d142f402dc35e411292b4ad9bf24bbd206561..feee187143e5a192f0a9ebe4217250aec6bf9420 100644 (file)
@@ -408,6 +408,10 @@ void wxComboBox::Append(const wxString& item)
 
 void wxComboBox::Delete(int n)
 {
+    if ( HasClientObjectData() )
+    {
+        SetClientObject(n, NULL);
+    }
     m_choice->Delete( n );
 }
 
index 46e08be0d526ac7bdb271b81fa2b5732745dab15..ac29f3125b9256ec8c3d6bdbc09b7769f37a2f0d 100644 (file)
@@ -21,7 +21,15 @@ IMPLEMENT_DYNAMIC_CLASS(wxChoice, wxControl)
 extern MenuHandle NewUniqueMenu() ;
 wxChoice::~wxChoice()
 {
-       // DeleteMenu( m_macPopUpMenuId ) ;
+    if ( HasClientObjectData() )
+    {
+        size_t i, max = GetCount();
+
+        for ( i = 0; i < max; ++i )
+            delete GetClientObject(i);
+    }
+
+        // DeleteMenu( m_macPopUpMenuId ) ;
        // DisposeMenu( m_macPopUpMenuHandle ) ;
 }
 bool wxChoice::Create(wxWindow *parent, wxWindowID id,
@@ -221,4 +229,4 @@ wxSize wxChoice::DoGetBestSize() const
            
        }
     return wxSize(lbWidth, lbHeight);
-}
\ No newline at end of file
+}
index 664d142f402dc35e411292b4ad9bf24bbd206561..feee187143e5a192f0a9ebe4217250aec6bf9420 100644 (file)
@@ -408,6 +408,10 @@ void wxComboBox::Append(const wxString& item)
 
 void wxComboBox::Delete(int n)
 {
+    if ( HasClientObjectData() )
+    {
+        SetClientObject(n, NULL);
+    }
     m_choice->Delete( n );
 }