From d8dd2565cffd0c43bc23d676c0f48efead147c16 Mon Sep 17 00:00:00 2001 From: zeljko Date: Sun, 2 Dec 2018 14:13:10 +0000 Subject: [PATCH] Qt5: Fixed showing of popup window over modal form. eg TDateTimePicker calendar. git-svn-id: trunk@59714 - --- lcl/interfaces/qt5/qtwsforms.pp | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/lcl/interfaces/qt5/qtwsforms.pp b/lcl/interfaces/qt5/qtwsforms.pp index b8ca2b3ed2..075994a97a 100644 --- a/lcl/interfaces/qt5/qtwsforms.pp +++ b/lcl/interfaces/qt5/qtwsforms.pp @@ -428,6 +428,9 @@ var var AForm: TCustomForm; AWidget: QWidgetH; + {$IFDEF DARWIN} + AFlag: Cardinal; + {$ENDIF} begin Result := False; AForm := TCustomForm(AWinControl); @@ -437,15 +440,25 @@ var not (AForm.FormStyle in fsAllStayOnTop) and (AForm.Parent = nil) and (QApplication_activeModalWidget() <> nil) and + {$IFDEF DARWIN} + not Assigned(AForm.PopupParent) then + {$ELSE} (AForm.BorderStyle in [bsDialog, bsSingle, bsSizeable]) and (AForm.PopupParent = nil) and (AForm.PopupMode = pmNone) then + {$ENDIF} begin AWidget := TQtWidget(AForm.Handle).Widget; {$IFDEF DARWIN} QWidget_setParent(AWidget, QApplication_activeWindow()); - QWidget_setWindowFlags(Widget.Widget, QtSheet or - GetQtBorderIcons(TCustomForm(AWinControl).BorderStyle, - TCustomForm(AWinControl).BorderIcons)); + if AForm.BorderStyle = bsNone then + begin + SetCapture(0); + AFlag := QtPopup; + end else + AFlag := QtSheet; + AFlag := AFlag or GetQtBorderIcons(TCustomForm(AWinControl).BorderStyle, + TCustomForm(AWinControl).BorderIcons); + QWidget_setWindowFlags(Widget.Widget, AFlag); {$ELSE} QWidget_setParent(AWidget, QApplication_desktop()); {$IFDEF MSWINDOWS}