LCL: Solve most performance issues with virtual TListView (OwnerData=True). Issue #39324, patch by d7_2_laz.

This commit is contained in:
Juha 2022-01-27 13:21:16 +02:00
parent 6b71b51df2
commit 4d72245552

View File

@ -1443,6 +1443,11 @@ begin
if not (lffSelectedValid in FFlags) or MultiSelect then if not (lffSelectedValid in FFlags) or MultiSelect then
begin begin
FSelected := nil; FSelected := nil;
if (not FOwnerData) or (FSelectedIdx >= 0) then
begin
if MultiSelect and FOwnerData and (FSelectedIdx >= 0) then
FSelected := Items[FSelectedIdx]
else
for i := 0 to Items.Count - 1 do for i := 0 to Items.Count - 1 do
begin begin
if Items[i].Selected then if Items[i].Selected then
@ -1451,6 +1456,7 @@ begin
break; break;
end; end;
end; end;
end;
Include(FFlags, lffSelectedValid); Include(FFlags, lffSelectedValid);
end; end;
Result := FSelected; Result := FSelected;