mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-04 16:40:23 +02:00
Patch from Philip Hess to fix tab order on qt widgetset.
git-svn-id: trunk@10526 -
This commit is contained in:
parent
305e2a2521
commit
1f29653935
@ -410,15 +410,6 @@ type
|
|||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
{ Helper functions }
|
|
||||||
|
|
||||||
function SortListByTabOrder(Item1: Pointer; Item2: Pointer): Integer;
|
|
||||||
begin
|
|
||||||
if TWinControl(Item1).TabOrder = TWinControl(Item2).TabOrder then Result := 0
|
|
||||||
else if TWinControl(Item1).TabOrder < TWinControl(Item2).TabOrder then Result := -1
|
|
||||||
else if TWinControl(Item1).TabOrder > TWinControl(Item2).TabOrder then Result := 1;
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ TQtWidget }
|
{ TQtWidget }
|
||||||
|
|
||||||
{------------------------------------------------------------------------------
|
{------------------------------------------------------------------------------
|
||||||
@ -1731,48 +1722,39 @@ end;
|
|||||||
------------------------------------------------------------------------------}
|
------------------------------------------------------------------------------}
|
||||||
procedure TQtMainWindow.setTabOrders;
|
procedure TQtMainWindow.setTabOrders;
|
||||||
var
|
var
|
||||||
i: Integer;
|
i: Integer;
|
||||||
Form: TForm;
|
Form: TForm;
|
||||||
List: TList;
|
List: TFPList;
|
||||||
begin
|
begin
|
||||||
List := TList.Create;
|
Form := TForm(LCLObject);
|
||||||
|
|
||||||
Form := TForm(LCLObject);
|
|
||||||
|
|
||||||
{ Creates a list with childs of the form that are available to receive Tab focus }
|
List := TFPList.Create;
|
||||||
for i := 0 to Form.ComponentCount - 1 do
|
Form.GetTabOrderList(List);
|
||||||
begin
|
|
||||||
if Form.Components[i] is TWinControl then
|
|
||||||
if TWinControl(Form.Components[i]).TabStop then
|
|
||||||
List.Add(Form.Components[i]);
|
|
||||||
end;
|
|
||||||
|
|
||||||
List.Sort(SortListByTabOrder);
|
for i := 0 to List.Count - 2 do
|
||||||
|
begin
|
||||||
|
setTabOrder(TQtWidget(TWinControl(List.Items[i]).Handle),
|
||||||
|
TQtWidget(TWinControl(List.Items[i + 1]).Handle));
|
||||||
|
|
||||||
for i := 0 to List.Count - 2 do
|
{$ifdef VerboseQt}
|
||||||
begin
|
WriteLn('Setting Tab Order first: ', TWinControl(List.Items[i]).Name, ' second: ',
|
||||||
setTabOrder(TQtWidget(TWinControl(List.Items[i]).Handle),
|
TWinControl(List.Items[i + 1]).Name);
|
||||||
TQtWidget(TWinControl(List.Items[i + 1]).Handle));
|
{$endif}
|
||||||
|
end;
|
||||||
|
|
||||||
{$ifdef VerboseQt}
|
{ The last element points to the first }
|
||||||
WriteLn('Setting Tab Order first: ', TWinControl(List.Items[i]).Name, ' second: ',
|
if List.Count > 1 then
|
||||||
TWinControl(List.Items[i + 1]).Name);
|
begin
|
||||||
{$endif}
|
setTabOrder(TQtWidget(TWinControl(List.Items[List.Count - 1]).Handle),
|
||||||
end;
|
TQtWidget(TWinControl(List.Items[0]).Handle));
|
||||||
|
|
||||||
{ The last element points to the first }
|
{$ifdef VerboseQt}
|
||||||
if List.Count > 1 then
|
WriteLn('Setting Tab Order first: ', TWinControl(List.Items[List.Count - 1]).Name, ' second: ',
|
||||||
begin
|
TWinControl(List.Items[0]).Name);
|
||||||
setTabOrder(TQtWidget(TWinControl(List.Items[List.Count - 1]).Handle),
|
{$endif}
|
||||||
TQtWidget(TWinControl(List.Items[0]).Handle));
|
end;
|
||||||
|
|
||||||
{$ifdef VerboseQt}
|
List.Free;
|
||||||
WriteLn('Setting Tab Order first: ', TWinControl(List.Items[List.Count - 1]).Name, ' second: ',
|
|
||||||
TWinControl(List.Items[0]).Name);
|
|
||||||
{$endif}
|
|
||||||
end;
|
|
||||||
|
|
||||||
List.Free;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{------------------------------------------------------------------------------
|
{------------------------------------------------------------------------------
|
||||||
|
Loading…
Reference in New Issue
Block a user