Qt,Qt5,Qt6: fixed borderless popup over parent form with FormStyle = fsStayOnTop. issue #40440

This commit is contained in:
Željan Rikalo 2023-08-22 19:28:16 +02:00
parent 24e996ddef
commit 2a339f8cb1
3 changed files with 36 additions and 0 deletions

View File

@ -7020,6 +7020,9 @@ end;
procedure TQtMainWindow.ChangeParent(NewParent: QWidgetH); procedure TQtMainWindow.ChangeParent(NewParent: QWidgetH);
var var
Flags: QtWindowFlags; Flags: QtWindowFlags;
{$IFNDEF MSWINDOWS}
Flags2: QtWindowFlags;
{$ENDIF}
Visible: Boolean; Visible: Boolean;
begin begin
if NewParent <> Widget then if NewParent <> Widget then
@ -7027,6 +7030,15 @@ begin
Visible := getVisible; Visible := getVisible;
Flags := windowFlags; Flags := windowFlags;
setParent(NewParent); setParent(NewParent);
{$IFNDEF MSWINDOWS}
//issue #40440
if NewParent <> nil then
Flags2 := QWidget_windowFlags(NewParent)
else
Flags2 := 0;
if (Flags and QtWindowStaysOnTopHint = 0) and (Flags2 and QtWindowStaysOnTopHint <> 0) then
Flags := Flags or QtWindowStaysOnTopHint;
{$ENDIF}
setWindowFlags(Flags); setWindowFlags(Flags);
setVisible(Visible); setVisible(Visible);
end; end;

View File

@ -7135,6 +7135,9 @@ end;
procedure TQtMainWindow.ChangeParent(NewParent: QWidgetH); procedure TQtMainWindow.ChangeParent(NewParent: QWidgetH);
var var
Flags: QtWindowFlags; Flags: QtWindowFlags;
{$IFNDEF MSWINDOWS}
Flags2: QtWindowFlags;
{$ENDIF}
Visible: Boolean; Visible: Boolean;
begin begin
if NewParent <> Widget then if NewParent <> Widget then
@ -7142,6 +7145,15 @@ begin
Visible := getVisible; Visible := getVisible;
Flags := windowFlags; Flags := windowFlags;
setParent(NewParent); setParent(NewParent);
{$IFNDEF MSWINDOWS}
//issue #40440
if NewParent <> nil then
Flags2 := QWidget_windowFlags(NewParent)
else
Flags2 := 0;
if (Flags and QtWindowStaysOnTopHint = 0) and (Flags2 and QtWindowStaysOnTopHint <> 0) then
Flags := Flags or QtWindowStaysOnTopHint;
{$ENDIF}
setWindowFlags(Flags); setWindowFlags(Flags);
setVisible(Visible); setVisible(Visible);
end; end;

View File

@ -7159,6 +7159,9 @@ end;
procedure TQtMainWindow.ChangeParent(NewParent: QWidgetH); procedure TQtMainWindow.ChangeParent(NewParent: QWidgetH);
var var
Flags: QtWindowFlags; Flags: QtWindowFlags;
{$IFNDEF MSWINDOWS}
Flags2: QtWindowFlags;
{$ENDIF}
Visible: Boolean; Visible: Boolean;
begin begin
if NewParent <> Widget then if NewParent <> Widget then
@ -7166,6 +7169,15 @@ begin
Visible := getVisible; Visible := getVisible;
Flags := windowFlags; Flags := windowFlags;
setParent(NewParent); setParent(NewParent);
{$IFNDEF MSWINDOWS}
//issue #40440
if NewParent <> nil then
Flags2 := QWidget_windowFlags(NewParent)
else
Flags2 := 0;
if (Flags and QtWindowStaysOnTopHint = 0) and (Flags2 and QtWindowStaysOnTopHint <> 0) then
Flags := Flags or QtWindowStaysOnTopHint;
{$ENDIF}
setWindowFlags(Flags); setWindowFlags(Flags);
setVisible(Visible); setVisible(Visible);
end; end;