Patch from Philip Hess to fix tab order on qt widgetset.

git-svn-id: trunk@10526 -
This commit is contained in:
sekelsenmat 2007-01-29 00:38:22 +00:00
parent 305e2a2521
commit 1f29653935

View File

@ -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;
{------------------------------------------------------------------------------ {------------------------------------------------------------------------------