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
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
@@ -408,6 +408,10 @@ void wxComboBox::Append(const wxString& item)
|
||||
|
||||
void wxComboBox::Delete(int n)
|
||||
{
|
||||
if ( HasClientObjectData() )
|
||||
{
|
||||
SetClientObject(n, NULL);
|
||||
}
|
||||
m_choice->Delete( n );
|
||||
}
|
||||
|
||||
|
@@ -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);
|
||||
}
|
||||
|
||||
|
@@ -408,6 +408,10 @@ void wxComboBox::Append(const wxString& item)
|
||||
|
||||
void wxComboBox::Delete(int n)
|
||||
{
|
||||
if ( HasClientObjectData() )
|
||||
{
|
||||
SetClientObject(n, NULL);
|
||||
}
|
||||
m_choice->Delete( n );
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user