Skip to content

Commit a78a9e4

Browse files
committed
TSimbaTreeView: Delay filtering while in begin/endupdate
1 parent 9455588 commit a78a9e4

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

Source/simba.component_treeview.pas

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ TSimbaTreeView = class(TCustomControl)
9191
Callback: TKeyEvent;
9292
end;
9393
FModified: Boolean;
94+
FPendingFilter: Boolean; // filter changed while in beginupdate/endupdate
9495

9596
procedure FontChanged(Sender: TObject); override;
9697

@@ -470,6 +471,13 @@ procedure TSimbaTreeView.UpdateFilter;
470471
Node, NodeParent: TTreeNode;
471472
FilterText: String;
472473
begin
474+
// delay the filter until EndUpdate
475+
if Items.IsUpdating then
476+
begin
477+
FPendingFilter := True;
478+
Exit;
479+
end;
480+
473481
FilterText := LowerCase(FFilterEdit.Text);
474482

475483
Items.BeginUpdate();
@@ -662,6 +670,13 @@ procedure TSimbaTreeView.DoEndUpdate(Sender: TObject);
662670
if FModified and Assigned(FOnModify) then
663671
FOnModify(Self);
664672
FModified := False;
673+
674+
if FPendingFilter then
675+
begin
676+
FPendingFilter := False;
677+
678+
UpdateFilter();
679+
end;
665680
end;
666681

667682
procedure TSimbaTreeView.DoTreeAddOrDelete(Sender: TObject; Node: TTreeNode);

0 commit comments

Comments
 (0)