summaryrefslogtreecommitdiff
path: root/src/controls/qquickmenupopupwindow.cpp
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@digia.com>2014-09-18 11:30:23 +0200
committerJ-P Nurmi <jpnurmi@digia.com>2014-09-18 11:30:23 +0200
commit0276bda8914f94081d844ed671a215906fd1ae70 (patch)
tree2b54bb9c120cf5cd257337e3e005f12a6124f9c3 /src/controls/qquickmenupopupwindow.cpp
parent2766db3c581f00dbadabaef8eb869d404d821fe9 (diff)
parent1aecda36d1d12bcd24a5ee87dd82ed04f85c41e2 (diff)
downloadqtquickcontrols-0276bda8914f94081d844ed671a215906fd1ae70.tar.gz
Merge remote-tracking branch 'origin/5.3' into 5.4
Conflicts: src/controls/qquickmenupopupwindow.cpp Change-Id: Ibc10e7da3b3a2983c022b8973cd80cb1a7e110af
Diffstat (limited to 'src/controls/qquickmenupopupwindow.cpp')
-rw-r--r--src/controls/qquickmenupopupwindow.cpp13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/controls/qquickmenupopupwindow.cpp b/src/controls/qquickmenupopupwindow.cpp
index c3231fd4..52ce7219 100644
--- a/src/controls/qquickmenupopupwindow.cpp
+++ b/src/controls/qquickmenupopupwindow.cpp
@@ -42,8 +42,10 @@
QT_BEGIN_NAMESPACE
QQuickMenuPopupWindow::QQuickMenuPopupWindow() :
- QQuickPopupWindow(), m_itemAt(0)
-{ }
+ m_itemAt(0),
+ m_logicalParentWindow(0)
+{
+}
void QQuickMenuPopupWindow::setParentItem(QQuickItem *item)
{
@@ -72,8 +74,11 @@ void QQuickMenuPopupWindow::setItemAt(QQuickItem *menuItem)
void QQuickMenuPopupWindow::setParentWindow(QWindow *effectiveParentWindow, QQuickWindow *parentWindow)
{
+ while (effectiveParentWindow && effectiveParentWindow->parent())
+ effectiveParentWindow = effectiveParentWindow->parent();
if (transientParent() != effectiveParentWindow)
setTransientParent(effectiveParentWindow);
+ m_logicalParentWindow = parentWindow;
if (parentWindow) {
connect(parentWindow, SIGNAL(destroyed()), this, SLOT(dismissPopup()));
if (QQuickMenuPopupWindow *pw = qobject_cast<QQuickMenuPopupWindow *>(parentWindow))
@@ -129,6 +134,10 @@ void QQuickMenuPopupWindow::exposeEvent(QExposeEvent *e)
// the popup will reposition at the last moment, so its
// initial position must be captured for updateSize().
m_initialPos = position();
+ if (m_logicalParentWindow && m_logicalParentWindow->parent()) {
+ // This must be a QQuickWindow embedded via createWindowContainer.
+ m_initialPos += m_logicalParentWindow->geometry().topLeft();
+ }
QQuickPopupWindow::exposeEvent(e);
}