Index: sources/gui/qml/components/HeaderBarPopup.qml =================================================================== diff -u -r3ee91a030e9affe0a50acdee33520c985c05d779 -red8be1a75c2b1b3cc9f5e919fd38e135f707eac6 --- sources/gui/qml/components/HeaderBarPopup.qml (.../HeaderBarPopup.qml) (revision 3ee91a030e9affe0a50acdee33520c985c05d779) +++ sources/gui/qml/components/HeaderBarPopup.qml (.../HeaderBarPopup.qml) (revision ed8be1a75c2b1b3cc9f5e919fd38e135f707eac6) @@ -5,8 +5,24 @@ import "qrc:/components" ModalDialog { id: _root - signal adjustPosition () + property var button: null + /*! + * \brief Helper function to position dialog under respected button + * \param vButton - Headerbar icon button to map and place dialog under + */ + function adjustPosition ( vButton) { x = vButton.mapToItem(null, vButton.width, 0).x - width } + + /*! + * \brief Helper function to position and open dialog + * \param vButton - Headerbar icon button + */ + function openDialog ( vButton ) { + button = vButton + adjustPosition(button) + open() + } + implicitWidth : contentItem.implicitWidth + padding * 2 // Auto-size to content implicitHeight : contentItem.implicitHeight + padding * 2 width : implicitWidth @@ -18,5 +34,5 @@ backgroundColor : "#D2D6DB" showDropShadow : true - onImplicitWidthChanged: Qt.callLater(function() { adjustPosition() }) + onImplicitWidthChanged: Qt.callLater(function() { if (button) { adjustPosition(_root.button) } }) }