mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-07-28 18:16:24 +02:00
LCL: Add BeginUpdate..EndUpdate for FullCollapse and FullExpand in TreeView. Issue #40304, patch by n7800.
This commit is contained in:
parent
510d99957d
commit
ab21cfa331
@ -743,24 +743,32 @@ procedure TTreeNode.ExpandItem(ExpandIt, Recurse: Boolean);
|
|||||||
var
|
var
|
||||||
ANode: TTreeNode;
|
ANode: TTreeNode;
|
||||||
begin
|
begin
|
||||||
if Recurse then begin
|
if TreeView <> nil then
|
||||||
ExpandItem(ExpandIt, False);
|
TreeView.BeginUpdate;
|
||||||
ANode := GetFirstChild;
|
try
|
||||||
while ANode<>nil do begin
|
if Recurse then
|
||||||
ANode.ExpandItem(ExpandIt, true);
|
begin
|
||||||
ANode := ANode.FNextBrother;
|
ExpandItem(ExpandIt, False);
|
||||||
end;
|
ANode := GetFirstChild;
|
||||||
end
|
while ANode <> nil do
|
||||||
else begin
|
begin
|
||||||
if TreeView<>nil then
|
ANode.ExpandItem(ExpandIt, true);
|
||||||
Include(TreeView.FStates,tvsManualNotify);
|
ANode := ANode.FNextBrother;
|
||||||
try
|
end;
|
||||||
if DoCanExpand(ExpandIt) then
|
end else begin
|
||||||
DoExpand(ExpandIt);
|
if TreeView <> nil then
|
||||||
finally
|
Include(TreeView.FStates, tvsManualNotify);
|
||||||
if TreeView<>nil then
|
try
|
||||||
Exclude(TreeView.FStates,tvsManualNotify);
|
if DoCanExpand(ExpandIt) then
|
||||||
|
DoExpand(ExpandIt);
|
||||||
|
finally
|
||||||
|
if TreeView <> nil then
|
||||||
|
Exclude(TreeView.FStates, tvsManualNotify);
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
finally
|
||||||
|
if TreeView <> nil then
|
||||||
|
TreeView.EndUpdate;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -4364,10 +4372,15 @@ procedure TCustomTreeView.FullExpand;
|
|||||||
var
|
var
|
||||||
Node: TTreeNode;
|
Node: TTreeNode;
|
||||||
begin
|
begin
|
||||||
Node := Items.GetFirstNode;
|
BeginUpdate;
|
||||||
while Node <> nil do begin
|
try
|
||||||
Node.Expand(True);
|
Node := Items.GetFirstNode;
|
||||||
Node := Node.GetNextSibling;
|
while Node <> nil do begin
|
||||||
|
Node.Expand(True);
|
||||||
|
Node := Node.GetNextSibling;
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
EndUpdate;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -4375,10 +4388,15 @@ procedure TCustomTreeView.FullCollapse;
|
|||||||
var
|
var
|
||||||
Node: TTreeNode;
|
Node: TTreeNode;
|
||||||
begin
|
begin
|
||||||
Node := Items.GetFirstNode;
|
BeginUpdate;
|
||||||
while Node <> nil do begin
|
try
|
||||||
Node.Collapse(True);
|
Node := Items.GetFirstNode;
|
||||||
Node := Node.GetNextSibling;
|
while Node <> nil do begin
|
||||||
|
Node.Collapse(True);
|
||||||
|
Node := Node.GetNextSibling;
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
EndUpdate;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user