mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-20 09:39:13 +02:00
lazcontrols: TTreeFilterEdit: free noe data on tree destroy
git-svn-id: trunk@35091 -
This commit is contained in:
parent
aad4d125c5
commit
c0dada7561
@ -60,6 +60,7 @@ type
|
|||||||
procedure SetFilteredTreeview(const AValue: TCustomTreeview);
|
procedure SetFilteredTreeview(const AValue: TCustomTreeview);
|
||||||
procedure SetShowDirHierarchy(const AValue: Boolean);
|
procedure SetShowDirHierarchy(const AValue: Boolean);
|
||||||
function FilterTree(Node: TTreeNode): Boolean;
|
function FilterTree(Node: TTreeNode): Boolean;
|
||||||
|
procedure OnBeforeTreeDestroy(Sender: TObject);
|
||||||
protected
|
protected
|
||||||
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
|
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
|
||||||
procedure MoveNext; override;
|
procedure MoveNext; override;
|
||||||
@ -121,9 +122,9 @@ end;
|
|||||||
|
|
||||||
destructor TTreeFilterBranch.Destroy;
|
destructor TTreeFilterBranch.Destroy;
|
||||||
begin
|
begin
|
||||||
fFilenameMap.Free;
|
FreeAndNil(fFilenameMap);
|
||||||
fSortedData.Free;
|
FreeAndNil(fSortedData);
|
||||||
fOriginalData.Free;
|
FreeAndNil(fOriginalData);
|
||||||
FreeTVNodeData(fRootNode);
|
FreeTVNodeData(fRootNode);
|
||||||
inherited Destroy;
|
inherited Destroy;
|
||||||
end;
|
end;
|
||||||
@ -330,8 +331,8 @@ end;
|
|||||||
|
|
||||||
destructor TTreeFilterEdit.Destroy;
|
destructor TTreeFilterEdit.Destroy;
|
||||||
begin
|
begin
|
||||||
fBranches.Free;
|
FreeAndNil(fBranches);
|
||||||
fSelectionList.Free;
|
FreeAndNil(fSelectionList);
|
||||||
inherited Destroy;
|
inherited Destroy;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -340,14 +341,23 @@ begin
|
|||||||
Result := TreeFilterGlyph;
|
Result := TreeFilterGlyph;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TTreeFilterEdit.OnBeforeTreeDestroy(Sender: TObject);
|
||||||
|
begin
|
||||||
|
FreeAndNil(fBranches);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TTreeFilterEdit.SetFilteredTreeview(const AValue: TCustomTreeview);
|
procedure TTreeFilterEdit.SetFilteredTreeview(const AValue: TCustomTreeview);
|
||||||
begin
|
begin
|
||||||
if fFilteredTreeview = AValue then Exit;
|
if fFilteredTreeview = AValue then Exit;
|
||||||
if fFilteredTreeview <> nil then
|
if fFilteredTreeview <> nil then begin
|
||||||
fFilteredTreeview.RemoveFreeNotification(Self);
|
fFilteredTreeview.RemoveFreeNotification(Self);
|
||||||
|
fFilteredTreeview.RemoveHandlerOnBeforeDestruction(@OnBeforeTreeDestroy);
|
||||||
|
end;
|
||||||
fFilteredTreeview := AValue;
|
fFilteredTreeview := AValue;
|
||||||
if fFilteredTreeview <> nil then
|
if fFilteredTreeview <> nil then begin
|
||||||
fFilteredTreeview.FreeNotification(Self);
|
fFilteredTreeview.FreeNotification(Self);
|
||||||
|
fFilteredTreeview.AddHandlerOnBeforeDestruction(@OnBeforeTreeDestroy);
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TTreeFilterEdit.SetShowDirHierarchy(const AValue: Boolean);
|
procedure TTreeFilterEdit.SetShowDirHierarchy(const AValue: Boolean);
|
||||||
@ -375,8 +385,6 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TTreeFilterEdit.Notification(AComponent: TComponent; Operation: TOperation);
|
procedure TTreeFilterEdit.Notification(AComponent: TComponent; Operation: TOperation);
|
||||||
var
|
|
||||||
i: Integer;
|
|
||||||
begin
|
begin
|
||||||
inherited Notification(AComponent, Operation);
|
inherited Notification(AComponent, Operation);
|
||||||
if (Operation = opRemove) then
|
if (Operation = opRemove) then
|
||||||
@ -384,9 +392,7 @@ begin
|
|||||||
if FilteredTreeview=AComponent then
|
if FilteredTreeview=AComponent then
|
||||||
begin
|
begin
|
||||||
fFilteredTreeview:=nil;
|
fFilteredTreeview:=nil;
|
||||||
if Assigned(fBranches) then
|
FreeAndNil(fBranches);
|
||||||
for i := 0 to fBranches.Count-1 do
|
|
||||||
fBranches[i].CleanUp;
|
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
Loading…
Reference in New Issue
Block a user