diff --git a/qt6/src/qml/DialogWindow.qml b/qt6/src/qml/DialogWindow.qml index 1c4f120f..c9e8818b 100644 --- a/qt6/src/qml/DialogWindow.qml +++ b/qt6/src/qml/DialogWindow.qml @@ -33,6 +33,9 @@ Window { property real leftPadding: DS.Style.dialogWindow.contentHMargin property real rightPadding: DS.Style.dialogWindow.contentHMargin + property var transientParentWindow: null + transientParent: transientParentWindow + Item { id: content palette: control.active ? D.DTK.palette : D.DTK.inactivePalette @@ -60,6 +63,24 @@ Window { } } + Component.onCompleted: { + if (control.modality === Qt.WindowModal && !transientParentWindow) + transientParentWindow = Qt.application.activeWindow + } + + onVisibleChanged: { + if (!control.visible) + return + if (control.modality !== Qt.WindowModal) + return + if (!transientParentWindow || transientParentWindow === control) + transientParentWindow = Qt.application.activeWindow + Qt.callLater(function () { + control.raise() + control.requestActivate() + }) + } + onClosing: function(close) { // close can't reset sub control's hovered state. pms Bug:168405 // if we need to close, we can add closing handler to set `close.acceped = true`