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,13 +1443,19 @@ begin
if not (lffSelectedValid in FFlags) or MultiSelect then
begin
FSelected := nil;
for i := 0 to Items.Count - 1 do
if (not FOwnerData) or (FSelectedIdx >= 0) then
begin
if Items[i].Selected then
begin
FSelected := Items[i];
break;
end;
if MultiSelect and FOwnerData and (FSelectedIdx >= 0) then
FSelected := Items[FSelectedIdx]
else
for i := 0 to Items.Count - 1 do
begin
if Items[i].Selected then
begin
FSelected := Items[i];
break;
end;
end;
end;
Include(FFlags, lffSelectedValid);
end;