From 93a2ed86cc1aeff90a86788bc0380ed6a3aee130 Mon Sep 17 00:00:00 2001 From: ondrej Date: Fri, 15 Jun 2018 14:28:30 +0000 Subject: [PATCH] LCL: treeview: protect Change as well, not only OnChange git-svn-id: trunk@58279 - --- lcl/comctrls.pp | 2 +- lcl/include/treeview.inc | 19 +++++++++---------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/lcl/comctrls.pp b/lcl/comctrls.pp index 182b2eabb2..fb4fd617cf 100644 --- a/lcl/comctrls.pp +++ b/lcl/comctrls.pp @@ -3300,7 +3300,7 @@ type private FAccessibilityOn: Boolean; FBottomItem: TTreeNode; - FCallingOnChange: Boolean; + FCallingChange: Boolean; FEditingItem: TTreeNode; FExpandSignType: TTreeViewExpandSignType; FExpandSignSize: integer; diff --git a/lcl/include/treeview.inc b/lcl/include/treeview.inc index 8a3566e86c..06f362b529 100644 --- a/lcl/include/treeview.inc +++ b/lcl/include/treeview.inc @@ -4275,7 +4275,12 @@ procedure TCustomTreeView.OnChangeTimer(Sender: TObject); begin FChangeTimer.Enabled := False; //debugln('TCustomTreeView.OnChangeTimer'); - Change(FSelectedNode); + FCallingChange := True; + try + Change(FSelectedNode); + finally + FCallingChange := False; + end; end; procedure TCustomTreeView.UpdateScrollbars; @@ -5405,14 +5410,8 @@ end; procedure TCustomTreeView.Change(Node: TTreeNode); begin - if Assigned(FOnChange) then begin - FCallingOnChange := True; - try - FOnChange(Self, Node); - finally - FCallingOnChange := False; - end; - end; + if Assigned(FOnChange) then + FOnChange(Self, Node); end; procedure TCustomTreeView.Delete(Node: TTreeNode); @@ -6044,7 +6043,7 @@ begin Exclude(FStates, tvsSelectionChanged); DoSelectionChanged; FChangeTimer.Enabled := False; - if not FCallingOnChange then // Prevent recursive loop from OnChange handler. + if not FCallingChange then // Prevent recursive loop from OnChange handler. FChangeTimer.Enabled := True; end; end;