trying to fix memory leak in wxListCtrl (attributes not deleted)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@5889 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2000-02-07 16:51:39 +00:00
parent f5ac656c5a
commit 6932a32c2b
2 changed files with 23 additions and 23 deletions

View File

@@ -239,7 +239,7 @@ void wxListCtrl::UpdateStyle()
}
}
wxListCtrl::~wxListCtrl()
void wxListCtrl::FreeAllAttrs()
{
if ( m_hasAnyAttr )
{
@@ -247,8 +247,15 @@ wxListCtrl::~wxListCtrl()
{
delete (wxListItemAttr *)node->Data();
}
}
m_attrs.Destroy();
m_hasAnyAttr = FALSE;
}
}
wxListCtrl::~wxListCtrl()
{
if ( m_textCtrl )
{
m_textCtrl->UnsubclassWin();
@@ -1295,20 +1302,12 @@ bool wxListCtrl::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result)
}
case LVN_DELETEALLITEMS:
// What's the sense of generating a wxWin event for this when
// it's absolutely not portable?
// This is perfectly portable, RR
#if 1
eventType = wxEVT_COMMAND_LIST_DELETE_ALL_ITEMS;
eventType = wxEVT_COMMAND_LIST_DELETE_ALL_ITEMS;
event.m_itemIndex = -1;
#endif // 1
// return TRUE to suppress all additional LVN_DELETEITEM
// notifications - this makes deleting all items from a list ctrl
// much faster
*result = TRUE;
FreeAllAttrs();
break;
break;
case LVN_DELETEITEM:
{
@@ -1579,19 +1578,19 @@ bool wxListCtrl::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result)
if ( !GetEventHandler()->ProcessEvent(event) )
return FALSE;
if (eventType == wxEVT_COMMAND_LIST_DELETE_ALL_ITEMS)
{
// No postprocessing, because we want *return to
// be TRUE so that no further DeleteItem events
// are sent, RR.
return TRUE;
}
// post processing
// ---------------
switch ( (int)nmhdr->code )
{
case LVN_DELETEALLITEMS:
// always return TRUE to suppress all additional LVN_DELETEITEM
// notifications - this makes deleting all items from a list ctrl
// much faster
*result = TRUE;
return TRUE;
case LVN_GETDISPINFO:
{
LV_DISPINFO *info = (LV_DISPINFO *)lParam;
@@ -1611,8 +1610,6 @@ bool wxListCtrl::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result)
*result = event.IsAllowed();
return TRUE;
}
default:
break;
}
*result = !event.IsAllowed();