mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-10-01 03:09:22 +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 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
|
||||||
|
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user