diff --git a/src/controls/qquickmenupopupwindow.cpp b/src/controls/qquickmenupopupwindow.cpp index a8f2a153cf0f5959fe3ad0e6eb9e8fe38c7f3086..b44b082cf578d72cab762d2daf509855e8671b10 100644 --- a/src/controls/qquickmenupopupwindow.cpp +++ b/src/controls/qquickmenupopupwindow.cpp @@ -66,8 +66,16 @@ void QQuickMenuPopupWindow::show() posy = pos.y(); } - posx += parentWindow->geometry().left(); - posy += parentWindow->geometry().top(); + if (parentWindow->parent()) { + // If the parent window is embedded in another window, the offset needs to be relative to + // its top-level window container, or to global coordinates, which is the same in the end. + QPoint parentWindowOffset = parentWindow->mapToGlobal(QPoint()); + posx += parentWindowOffset.x(); + posy += parentWindowOffset.y(); + } else { + posx += parentWindow->geometry().left(); + posy += parentWindow->geometry().top(); + } } if (m_itemAt) {