From 674800cb1be42782ede895385ec680fae68fbcd1 Mon Sep 17 00:00:00 2001 From: zeljko Date: Fri, 5 Nov 2010 09:23:09 +0000 Subject: [PATCH] LCL: treeview: trigger OnDeletion() event before node is unbinded.Fixes issue #17832 . git-svn-id: trunk@28092 - --- lcl/include/treeview.inc | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/lcl/include/treeview.inc b/lcl/include/treeview.inc index 92489a745a..e5c1f69ce7 100644 --- a/lcl/include/treeview.inc +++ b/lcl/include/treeview.inc @@ -276,15 +276,20 @@ begin DebugLn('[TTreeNode.Destroy] Self=',DbgS(Self),' Self.Text=',Text); {$ENDIF} Include(FStates,nsDeleting); + + // we must trigger TCustomTreeView.OnDeletion event before + // unbinding.See issue #17832. + if (Owner <> nil) and (Owner.Owner <> nil) then + Owner.Owner.Delete(Self); + // delete childs HasChildren := false; // unbind all references Unbind; - if Owner<>nil then begin - if Owner.Owner<>nil then - Owner.Owner.Delete(Self); + + if Owner<>nil then dec(Owner.FCount); - end; + Data := nil; // free data if FItems<>nil then begin