summaryrefslogtreecommitdiff
path: root/src/controls/qquickmenupopupwindow.cpp
diff options
context:
space:
mode:
authorGabriel de Dietrich <gabriel.dedietrich@digia.com>2013-09-18 15:19:06 +0200
committerGabriel de Dietrich <gabriel.dedietrich@digia.com>2013-09-18 15:19:06 +0200
commit46f3cc477fc00aae887f085e063d6cb10bfdcd4c (patch)
tree0585601759ccbae2ed2abecedaf16e06b80676d0 /src/controls/qquickmenupopupwindow.cpp
parent4c184095d378622fb0c3bb1692b331b3cc04e010 (diff)
parent04e000d2b1719696581bb4ae6ec21e39236ef38c (diff)
downloadqtquickcontrols-46f3cc477fc00aae887f085e063d6cb10bfdcd4c.tar.gz
Merge branch 'stable' into dev
Conflicts: src/controls/qquickaction.cpp Change-Id: I85255ba5c27c0d8ea023d0867e5963d43f8f1ddb
Diffstat (limited to 'src/controls/qquickmenupopupwindow.cpp')
-rw-r--r--src/controls/qquickmenupopupwindow.cpp28
1 files changed, 26 insertions, 2 deletions
diff --git a/src/controls/qquickmenupopupwindow.cpp b/src/controls/qquickmenupopupwindow.cpp
index 19d85de0..a1839296 100644
--- a/src/controls/qquickmenupopupwindow.cpp
+++ b/src/controls/qquickmenupopupwindow.cpp
@@ -42,14 +42,15 @@
#include "qquickmenupopupwindow_p.h"
#include <qguiapplication.h>
+#include <qpa/qwindowsysteminterface.h>
#include <qquickitem.h>
#include <QtGui/QScreen>
QT_BEGIN_NAMESPACE
QQuickMenuPopupWindow::QQuickMenuPopupWindow(QWindow *parent) :
- QQuickWindow(parent), m_mouseMoved(false), m_itemAt(0),
- m_parentItem(0), m_menuContentItem(0)
+ QQuickWindow(parent), m_mouseMoved(false), m_needsActivatedEvent(true),
+ m_itemAt(0), m_parentItem(0), m_menuContentItem(0)
{
setFlags(Qt::Popup);
setModality(Qt::WindowModal);
@@ -241,4 +242,27 @@ void QQuickMenuPopupWindow::forwardEventToTransientParent(QMouseEvent *e)
}
}
+void QQuickMenuPopupWindow::exposeEvent(QExposeEvent *e)
+{
+ if (isExposed() && m_needsActivatedEvent) {
+ m_needsActivatedEvent = false;
+ QWindowSystemInterface::handleWindowActivated(this, Qt::PopupFocusReason);
+ } else if (!isExposed() && !m_needsActivatedEvent) {
+ m_needsActivatedEvent = true;
+ if (QWindow *tp = transientParent())
+ QWindowSystemInterface::handleWindowActivated(tp, Qt::PopupFocusReason);
+ }
+ QQuickWindow::exposeEvent(e);
+}
+
+void QQuickMenuPopupWindow::hideEvent(QHideEvent *e)
+{
+ if (QWindow *tp = !m_needsActivatedEvent ? transientParent() : 0) {
+ m_needsActivatedEvent = true;
+ QWindowSystemInterface::handleWindowActivated(tp, Qt::PopupFocusReason);
+ }
+
+ QQuickWindow::hideEvent(e);
+}
+
QT_END_NAMESPACE