diff --git a/qt6/src/qml/TitleBar.qml b/qt6/src/qml/TitleBar.qml index 6ea23d5b..9dff2473 100644 --- a/qt6/src/qml/TitleBar.qml +++ b/qt6/src/qml/TitleBar.qml @@ -145,8 +145,12 @@ Control { enabled: !menuDisabled Layout.alignment: Qt.AlignRight onClicked: { - var pos = Qt.point(optionMenuLoader.x, control.height) - optionMenuLoader.item.popup(optionMenuBtn, pos) + if (optionMenuLoader.item && optionMenuLoader.item.visible) { + optionMenuLoader.item.close() + } else { + var pos = Qt.point(optionMenuLoader.x, control.height) + optionMenuLoader.item.popup(optionMenuBtn, pos) + } } Loader { @@ -158,6 +162,7 @@ Control { AboutAction { aboutDialog: control.aboutDialog } QuitAction { } } + onLoaded: item.closePolicy = item.closePolicy | Popup.CloseOnPressOutsideParent } } diff --git a/src/qml/TitleBar.qml b/src/qml/TitleBar.qml index 97937812..bce40fab 100644 --- a/src/qml/TitleBar.qml +++ b/src/qml/TitleBar.qml @@ -144,8 +144,12 @@ Control { enabled: !menuDisabled Layout.alignment: Qt.AlignRight onClicked: { - var pos = Qt.point(optionMenuLoader.x, control.height) - optionMenuLoader.item.popup(optionMenuBtn, pos) + if (optionMenuLoader.item && optionMenuLoader.item.visible) { + optionMenuLoader.item.close() + } else { + var pos = Qt.point(optionMenuLoader.x, control.height) + optionMenuLoader.item.popup(optionMenuBtn, pos) + } } Loader { @@ -157,6 +161,7 @@ Control { AboutAction { aboutDialog: control.aboutDialog } QuitAction { } } + onLoaded: item.closePolicy = item.closePolicy | Popup.CloseOnPressOutsideParent } }