mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-29 18:50:27 +02:00
Qt: fixed TQtWSWinControl.SetChildZPosition().Partially fixes #17298
git-svn-id: trunk@27268 -
This commit is contained in:
parent
b542879b49
commit
4cc5ab25bf
@ -228,6 +228,7 @@ type
|
||||
procedure move(ANewLeft, ANewTop: Integer); virtual;
|
||||
procedure preferredSize(var PreferredWidth, PreferredHeight: integer; WithThemeSpace: Boolean); virtual;
|
||||
procedure raiseWidget; virtual;
|
||||
procedure stackUnder(AWidget: QWidgetH); virtual;
|
||||
procedure frame_resize(ANewWidth, ANewHeight: Integer);
|
||||
procedure resize(ANewWidth, ANewHeight: Integer); virtual;
|
||||
procedure releaseMouse;
|
||||
@ -420,6 +421,7 @@ type
|
||||
function CanPaintBackground: Boolean; override;
|
||||
function EventFilter(Sender: QObjectH; Event: QEventH): Boolean; cdecl; override;
|
||||
procedure scroll(dx, dy: integer; ARect: PRect = nil); override;
|
||||
procedure stackUnder(AWidget: QWidgetH); override;
|
||||
end;
|
||||
|
||||
{ TQtGraphicView }
|
||||
@ -3479,6 +3481,11 @@ begin
|
||||
QWidget_raise(Widget);
|
||||
end;
|
||||
|
||||
procedure TQtWidget.stackUnder(AWidget: QWidgetH);
|
||||
begin
|
||||
QWidget_stackUnder(Widget, AWidget);
|
||||
end;
|
||||
|
||||
procedure TQtWidget.frame_resize(ANewWidth, ANewHeight: Integer);
|
||||
var
|
||||
R1, R2: TRect;
|
||||
@ -11056,6 +11063,12 @@ begin
|
||||
FScrollY := FScrollY + dy;
|
||||
end;
|
||||
|
||||
procedure TQtViewPort.stackUnder(AWidget: QWidgetH);
|
||||
begin
|
||||
// do nothing for TQtViewPort
|
||||
// inherited stackUnder(AWidget);
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
Function: TQtAbstractScrollArea.horizontalScrollbar
|
||||
Params: None
|
||||
|
@ -316,28 +316,34 @@ class procedure TQtWSWinControl.SetChildZPosition(const AWinControl,
|
||||
AChild: TWinControl; const AOldPos, ANewPos: Integer; const AChildren: TFPList);
|
||||
var
|
||||
n: Integer;
|
||||
child: TWinControl;
|
||||
Child: TWinControl;
|
||||
Reorder: TFPList;
|
||||
begin
|
||||
if not WSCheckHandleAllocated(AWincontrol, 'SetChildZPosition') then
|
||||
Exit;
|
||||
if not WSCheckHandleAllocated(AChild, 'SetChildZPosition (child)') then
|
||||
Exit;
|
||||
|
||||
if ANewPos < AChildren.Count div 2
|
||||
then begin
|
||||
// move down (and others below us)
|
||||
for n := ANewPos downto 0 do
|
||||
if (ANewPos <= 0) or (ANewPos >= AChildren.Count - 1) then
|
||||
begin
|
||||
// simple
|
||||
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
|
||||
child := TWinControl(AChildren[n]);
|
||||
if child.HandleAllocated then
|
||||
TQtWidget(child.Handle).lowerWidget;
|
||||
end;
|
||||
end
|
||||
else begin
|
||||
// move up (and others above us)
|
||||
for n := ANewPos to AChildren.Count - 1 do
|
||||
begin
|
||||
child := TWinControl(AChildren[n]);
|
||||
if child.HandleAllocated then
|
||||
TQtWidget(child.Handle).raiseWidget;
|
||||
Reorder := TFPList.Create;
|
||||
for n := AChildren.Count - 1 downto 0 do
|
||||
Reorder.Add(AChildren[n]);
|
||||
Child := TWinControl(Reorder[ANewPos + 1]);
|
||||
if Child.HandleAllocated then
|
||||
TQtWidget(AChild.Handle).stackUnder(TQtWidget(Child.Handle).Widget)
|
||||
else
|
||||
TQtWidget(AChild.Handle).lowerWidget;
|
||||
Reorder.Free;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
Loading…
Reference in New Issue
Block a user