Qt: fixed TQtWSWinControl.SetChildZPosition().Partially fixes #17298

git-svn-id: trunk@27268 -
This commit is contained in:
zeljko 2010-09-04 17:00:08 +00:00
parent b542879b49
commit 4cc5ab25bf
2 changed files with 36 additions and 17 deletions

View File

@ -228,6 +228,7 @@ type
procedure move(ANewLeft, ANewTop: Integer); virtual; procedure move(ANewLeft, ANewTop: Integer); virtual;
procedure preferredSize(var PreferredWidth, PreferredHeight: integer; WithThemeSpace: Boolean); virtual; procedure preferredSize(var PreferredWidth, PreferredHeight: integer; WithThemeSpace: Boolean); virtual;
procedure raiseWidget; virtual; procedure raiseWidget; virtual;
procedure stackUnder(AWidget: QWidgetH); virtual;
procedure frame_resize(ANewWidth, ANewHeight: Integer); procedure frame_resize(ANewWidth, ANewHeight: Integer);
procedure resize(ANewWidth, ANewHeight: Integer); virtual; procedure resize(ANewWidth, ANewHeight: Integer); virtual;
procedure releaseMouse; procedure releaseMouse;
@ -420,6 +421,7 @@ type
function CanPaintBackground: Boolean; override; function CanPaintBackground: Boolean; override;
function EventFilter(Sender: QObjectH; Event: QEventH): Boolean; cdecl; override; function EventFilter(Sender: QObjectH; Event: QEventH): Boolean; cdecl; override;
procedure scroll(dx, dy: integer; ARect: PRect = nil); override; procedure scroll(dx, dy: integer; ARect: PRect = nil); override;
procedure stackUnder(AWidget: QWidgetH); override;
end; end;
{ TQtGraphicView } { TQtGraphicView }
@ -3479,6 +3481,11 @@ begin
QWidget_raise(Widget); QWidget_raise(Widget);
end; end;
procedure TQtWidget.stackUnder(AWidget: QWidgetH);
begin
QWidget_stackUnder(Widget, AWidget);
end;
procedure TQtWidget.frame_resize(ANewWidth, ANewHeight: Integer); procedure TQtWidget.frame_resize(ANewWidth, ANewHeight: Integer);
var var
R1, R2: TRect; R1, R2: TRect;
@ -11056,6 +11063,12 @@ begin
FScrollY := FScrollY + dy; FScrollY := FScrollY + dy;
end; end;
procedure TQtViewPort.stackUnder(AWidget: QWidgetH);
begin
// do nothing for TQtViewPort
// inherited stackUnder(AWidget);
end;
{------------------------------------------------------------------------------ {------------------------------------------------------------------------------
Function: TQtAbstractScrollArea.horizontalScrollbar Function: TQtAbstractScrollArea.horizontalScrollbar
Params: None Params: None

View File

@ -316,28 +316,34 @@ class procedure TQtWSWinControl.SetChildZPosition(const AWinControl,
AChild: TWinControl; const AOldPos, ANewPos: Integer; const AChildren: TFPList); AChild: TWinControl; const AOldPos, ANewPos: Integer; const AChildren: TFPList);
var var
n: Integer; n: Integer;
child: TWinControl; Child: TWinControl;
Reorder: TFPList;
begin begin
if not WSCheckHandleAllocated(AWincontrol, 'SetChildZPosition') then if not WSCheckHandleAllocated(AWincontrol, 'SetChildZPosition') then
Exit; Exit;
if not WSCheckHandleAllocated(AChild, 'SetChildZPosition (child)') then
Exit;
if ANewPos < AChildren.Count div 2 if (ANewPos <= 0) or (ANewPos >= AChildren.Count - 1) then
then begin begin
// move down (and others below us) // simple
for n := ANewPos downto 0 do if ANewPos <= 0 then // bottom
TQtWidget(AChild.Handle).lowerWidget
else
TQtWidget(AChild.Handle).raiseWidget;
end else
begin
if (ANewPos >= 0) and (ANewPos < AChildren.Count -1) then
begin begin
child := TWinControl(AChildren[n]); Reorder := TFPList.Create;
if child.HandleAllocated then for n := AChildren.Count - 1 downto 0 do
TQtWidget(child.Handle).lowerWidget; Reorder.Add(AChildren[n]);
end; Child := TWinControl(Reorder[ANewPos + 1]);
end if Child.HandleAllocated then
else begin TQtWidget(AChild.Handle).stackUnder(TQtWidget(Child.Handle).Widget)
// move up (and others above us) else
for n := ANewPos to AChildren.Count - 1 do TQtWidget(AChild.Handle).lowerWidget;
begin Reorder.Free;
child := TWinControl(AChildren[n]);
if child.HandleAllocated then
TQtWidget(child.Handle).raiseWidget;
end; end;
end; end;
end; end;