LCL: Make ListView.Selected return the first selected item also when OwnerData=True.

git-svn-id: trunk@65474 -
This commit is contained in:
juha 2021-07-18 21:34:01 +00:00
parent ada182fd7b
commit d6c215a491

View File

@ -1429,11 +1429,17 @@ function TCustomListView.GetSelection: TListItem;
var
i: Integer;
begin
if not OwnerData then
if OwnerData and not MultiSelect then
begin
{according to Delphi docs
we always must return first selected item, not the last selected one
see issue #16773}
if FSelectedIdx>=0 then begin
FOwnerDataItem.SetDataIndex(FSelectedIdx);
Result:=FOwnerDataItem;
end else
Result:=nil;
end
else begin
{ according to Delphi docs we always must return first selected item,
not the last selected one see issue #16773 }
if not (lffSelectedValid in FFlags) or MultiSelect then
begin
FSelected := nil;
@ -1448,12 +1454,6 @@ begin
Include(FFlags, lffSelectedValid);
end;
Result := FSelected;
end else begin
if FSelectedIdx>=0 then begin
FOwnerDataItem.SetDataIndex(FSelectedIdx);
Result:=FOwnerDataItem;
end else
Result:=nil;
end;
end;