From 03a18178716fe5f9e51332f00080abf9eb8bdc2b Mon Sep 17 00:00:00 2001 From: Mattia Barbon Date: Tue, 11 Feb 2003 21:14:17 +0000 Subject: [PATCH] Fix client data handling: delete client data for all items when a wxChoice is deleted, delete client data for an item when that item is deleted (backported). git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@19187 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/mac/carbon/choice.cpp | 11 ++++++++++- src/mac/carbon/combobox.cpp | 4 ++++ src/mac/choice.cpp | 11 ++++++++++- src/mac/combobox.cpp | 4 ++++ 4 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/mac/carbon/choice.cpp b/src/mac/carbon/choice.cpp index 582a3619e0..e2ce6fe4cf 100644 --- a/src/mac/carbon/choice.cpp +++ b/src/mac/carbon/choice.cpp @@ -27,7 +27,15 @@ 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 ) ; } @@ -271,3 +279,4 @@ wxSize wxChoice::DoGetBestSize() const } return wxSize(lbWidth, lbHeight); } + diff --git a/src/mac/carbon/combobox.cpp b/src/mac/carbon/combobox.cpp index 59a0edf814..6ae9d105c1 100644 --- a/src/mac/carbon/combobox.cpp +++ b/src/mac/carbon/combobox.cpp @@ -408,6 +408,10 @@ void wxComboBox::Append(const wxString& item) void wxComboBox::Delete(int n) { + if ( HasClientObjectData() ) + { + SetClientObject(n, NULL); + } m_choice->Delete( n ); } diff --git a/src/mac/choice.cpp b/src/mac/choice.cpp index 582a3619e0..e2ce6fe4cf 100644 --- a/src/mac/choice.cpp +++ b/src/mac/choice.cpp @@ -27,7 +27,15 @@ 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 ) ; } @@ -271,3 +279,4 @@ wxSize wxChoice::DoGetBestSize() const } return wxSize(lbWidth, lbHeight); } + diff --git a/src/mac/combobox.cpp b/src/mac/combobox.cpp index 59a0edf814..6ae9d105c1 100644 --- a/src/mac/combobox.cpp +++ b/src/mac/combobox.cpp @@ -408,6 +408,10 @@ void wxComboBox::Append(const wxString& item) void wxComboBox::Delete(int n) { + if ( HasClientObjectData() ) + { + SetClientObject(n, NULL); + } m_choice->Delete( n ); }