mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-02 01:00:22 +02:00
lazcontrols: TTreeFilterEdit: added Clean, bug #24662
git-svn-id: trunk@41930 -
This commit is contained in:
parent
ff5f02afd2
commit
7309c93641
@ -45,11 +45,14 @@ type
|
||||
procedure ApplyFilter;
|
||||
procedure TVDeleteUnneededNodes(p: integer);
|
||||
procedure TVClearUnneededAndCreateHierachy(Filename: string);
|
||||
procedure FreeNodeData(ANode : TTreeNode);
|
||||
procedure RemoveChildrenData(ARootNode : TTreeNode);
|
||||
public
|
||||
constructor Create(AOwner: TTreeFilterEdit; ARootNode: TTreeNode);
|
||||
destructor Destroy; override;
|
||||
procedure AddNodeData(ANodeText: string; AData: TObject; AFullFilename: string = '');
|
||||
function GetData(AIndex: integer): TObject;
|
||||
procedure Clear;
|
||||
end;
|
||||
|
||||
TBranchList = specialize TFPGObjectList<TTreeFilterBranch>;
|
||||
@ -141,6 +144,9 @@ end;
|
||||
|
||||
destructor TTreeFilterBranch.Destroy;
|
||||
begin
|
||||
|
||||
Clear;
|
||||
|
||||
FreeAndNil(fNodeTextToFullFilenameMap);
|
||||
FreeAndNil(fNodeTextToDataMap);
|
||||
FreeAndNil(fSortedData);
|
||||
@ -202,8 +208,10 @@ var
|
||||
ena: Boolean;
|
||||
AObject: TObject;
|
||||
begin
|
||||
if Assigned(fRootNode) then
|
||||
fRootNode.DeleteChildren // Delete old tree nodes.
|
||||
if Assigned(fRootNode) then Begin
|
||||
Clear;
|
||||
fRootNode.DeleteChildren; // Delete old tree nodes.
|
||||
end
|
||||
else
|
||||
fOwner.fFilteredTreeview.Items.Clear;
|
||||
if fOwner.ShowDirHierarchy then
|
||||
@ -317,6 +325,40 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TTreeFilterBranch.FreeNodeData(ANode : TTreeNode);
|
||||
Var
|
||||
AObject : TObject;
|
||||
Begin
|
||||
AObject := NIL;
|
||||
If Assigned(ANode) And Assigned(ANode.Data) Then Begin
|
||||
AObject := TObject(ANode.Data);
|
||||
If Assigned(AObject) And AObject.InheritsFrom(TTFENodeData) Then
|
||||
TTFENodeData(AObject).Node := NIL;
|
||||
If Assigned(AObject) And (AObject is TFileNameItem) Then
|
||||
AObject.Free;
|
||||
ANode.Data := NIL;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TTreeFilterBranch.RemoveChildrenData(ARootNode : TTreeNode);
|
||||
Var
|
||||
ANode : TTreeNode;
|
||||
Begin
|
||||
ANode := NIL;
|
||||
FreeNodeData(ARootNode);
|
||||
If Assigned(ARootNode) Then
|
||||
ANode := ARootNode.GetFirstChild;
|
||||
While Assigned(ANode) Do Begin
|
||||
FreeNodeData(ANode);
|
||||
ANode := ANode.GetNextSibling;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TTreeFilterBranch.Clear;
|
||||
Begin
|
||||
RemoveChildrenData(fRootNode);
|
||||
end;
|
||||
|
||||
{ TFileNameItem }
|
||||
|
||||
constructor TFileNameItem.Create(AFilename: string; aData: Pointer);
|
||||
|
@ -671,11 +671,11 @@ var
|
||||
Filename: String;
|
||||
ANodeData : TProjectNodeData;
|
||||
begin
|
||||
FreeNodeData(pntFile);
|
||||
|
||||
ItemsTreeView.BeginUpdate;
|
||||
try
|
||||
FilesBranch:=FilterEdit.GetBranch(FFilesNode);
|
||||
FilesBranch.Clear;
|
||||
FreeNodeData(pntFile);
|
||||
if LazProject<>nil then begin
|
||||
FilterEdit.SelectedPart:=FNextSelectedPart;
|
||||
FilterEdit.ShowDirHierarchy:=ShowDirectoryHierarchy;
|
||||
@ -705,11 +705,11 @@ var
|
||||
NodeText, AFilename: String;
|
||||
ANodeData : TProjectNodeData;
|
||||
begin
|
||||
FreeNodeData(pntDependency);
|
||||
|
||||
ItemsTreeView.BeginUpdate;
|
||||
try
|
||||
RequiredBranch:=FilterEdit.GetBranch(DependenciesNode);
|
||||
RequiredBranch.Clear;
|
||||
FreeNodeData(pntDependency);
|
||||
Dependency:=Nil;
|
||||
if LazProject<>nil then begin
|
||||
// required packages
|
||||
@ -854,9 +854,9 @@ var
|
||||
begin
|
||||
IdleConnected:=false;
|
||||
LazProject:=nil;
|
||||
inherited Destroy;
|
||||
for nt:=Low(TProjectNodeType) to High(TProjectNodeType) do
|
||||
FreeNodeData(nt);
|
||||
inherited Destroy;
|
||||
if ProjInspector=Self then
|
||||
ProjInspector:=nil;
|
||||
end;
|
||||
@ -959,22 +959,11 @@ procedure TProjectInspectorForm.FreeNodeData(Typ: TProjectNodeType);
|
||||
var
|
||||
NodeData,
|
||||
n: TProjectNodeData;
|
||||
AObject : TObject;
|
||||
ANode : TTreeNode;
|
||||
begin
|
||||
NodeData:=FProjectNodeDataList[Typ];
|
||||
while NodeData<>nil do begin
|
||||
n:=NodeData;
|
||||
NodeData:=NodeData.Next;
|
||||
If Assigned(n.Node) Then Begin
|
||||
ANode := TTreeNode(n.Node);
|
||||
If Assigned(ANode.Data) Then Begin
|
||||
AObject := TObject(ANode.Data);
|
||||
If AObject is TFileNameItem Then
|
||||
AObject.Free;
|
||||
end;
|
||||
ANode.Data := NIL;
|
||||
end;
|
||||
n.Free;
|
||||
end;
|
||||
FProjectNodeDataList[Typ]:=nil;
|
||||
|
@ -1084,22 +1084,11 @@ procedure TPackageEditorForm.FreeNodeData(Typ: TPENodeType);
|
||||
var
|
||||
NodeData: TPENodeData;
|
||||
n: TPENodeData;
|
||||
AObject : TObject;
|
||||
ANode : TTreeNode;
|
||||
begin
|
||||
NodeData:=FFirstNodeData[Typ];
|
||||
while NodeData<>nil do begin
|
||||
n:=NodeData;
|
||||
NodeData:=NodeData.Next;
|
||||
If Assigned(n.Node) Then Begin
|
||||
ANode := TTreeNode(n.Node);
|
||||
If Assigned(ANode.Data) Then Begin
|
||||
AObject := TObject(ANode.Data);
|
||||
If AObject is TFileNameItem Then
|
||||
AObject.Free;
|
||||
end;
|
||||
ANode.Data := NIL;
|
||||
end;
|
||||
n.Free;
|
||||
end;
|
||||
FFirstNodeData[Typ]:=nil;
|
||||
@ -1779,10 +1768,10 @@ var
|
||||
begin
|
||||
if LazPackage=nil then exit;
|
||||
|
||||
FreeNodeData(penFile);
|
||||
|
||||
// files belonging to package
|
||||
FilesBranch:=FilterEdit.GetBranch(FFilesNode);
|
||||
FilesBranch.Clear;
|
||||
FreeNodeData(penFile);
|
||||
FilterEdit.SelectedPart:=FNextSelectedPart;
|
||||
FilterEdit.ShowDirHierarchy:=ShowDirectoryHierarchy;
|
||||
FilterEdit.SortData:=SortAlphabetically;
|
||||
@ -1830,10 +1819,10 @@ var
|
||||
begin
|
||||
if LazPackage=nil then exit;
|
||||
|
||||
FreeNodeData(penDependency);
|
||||
|
||||
// required packages
|
||||
RequiredBranch:=FilterEdit.GetBranch(FRequiredPackagesNode);
|
||||
RequiredBranch.Clear;
|
||||
FreeNodeData(penDependency);
|
||||
FilterEdit.SelectedPart:=FNextSelectedPart;
|
||||
CurDependency:=LazPackage.FirstRequiredDependency;
|
||||
while CurDependency<>nil do begin
|
||||
@ -2412,9 +2401,9 @@ begin
|
||||
PackageEditors.DoFreeEditor(LazPackage);
|
||||
FLazPackage:=nil;
|
||||
FreeAndNil(FPlugins);
|
||||
inherited Destroy;
|
||||
for nt:=Low(TPENodeType) to High(TPENodeType) do
|
||||
FreeNodeData(nt);
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
{ TPackageEditors }
|
||||
|
Loading…
Reference in New Issue
Block a user