mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-06 16:41:28 +02:00
LazControls: TListFilterEdit move fFilteredListbox workaround for Gtk2
git-svn-id: trunk@50165 -
This commit is contained in:
parent
471e8b0da4
commit
461ea447a4
@ -303,22 +303,28 @@ end;
|
||||
|
||||
procedure TListFilterEdit.MoveTo(AIndex: Integer; ASelect: Boolean);
|
||||
var
|
||||
I: Integer;
|
||||
I, xOldItemIndex, xSelStart, xSelEnd: Integer;
|
||||
begin
|
||||
fFilteredListbox.LockSelectionChange;
|
||||
fFilteredListbox.Items.BeginUpdate;
|
||||
try
|
||||
if ASelect and fFilteredListbox.MultiSelect then
|
||||
begin
|
||||
if fFilteredListbox.ItemIndex < AIndex then
|
||||
for I := Max(0, fFilteredListbox.ItemIndex) to AIndex do
|
||||
fFilteredListbox.Selected[I] := True
|
||||
else
|
||||
for I := Max(0, fFilteredListbox.ItemIndex) downto AIndex do
|
||||
fFilteredListbox.Selected[I] := True
|
||||
xOldItemIndex := fFilteredListbox.ItemIndex;
|
||||
xSelStart := xOldItemIndex;
|
||||
xSelEnd := xOldItemIndex;
|
||||
while (xSelStart>=0) and fFilteredListbox.Selected[xSelStart] do
|
||||
Dec(xSelStart);
|
||||
while (xSelEnd<fFilteredListbox.Count) and fFilteredListbox.Selected[xSelEnd] do
|
||||
Inc(xSelEnd);
|
||||
fFilteredListbox.ItemIndex := AIndex;
|
||||
for I := Min(AIndex+1, xSelStart+1) to Max(AIndex-1, xSelEnd-1) do
|
||||
fFilteredListbox.Selected[I] := True;
|
||||
//Win32 sets ItemIndex to the last Selected[?] := True - in contrast to Gtk2 -> set selected again to work on all widgetsets
|
||||
fFilteredListbox.Selected[AIndex] := True;
|
||||
end else
|
||||
begin
|
||||
fFilteredListbox.ClearSelection;
|
||||
fFilteredListbox.ItemIndex := AIndex;
|
||||
fFilteredListbox.Selected[AIndex] := True;
|
||||
end;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user