diff options
author | Gabriel de Dietrich <gabriel.dedietrich@digia.com> | 2013-09-18 15:19:06 +0200 |
---|---|---|
committer | Gabriel de Dietrich <gabriel.dedietrich@digia.com> | 2013-09-18 15:19:06 +0200 |
commit | 46f3cc477fc00aae887f085e063d6cb10bfdcd4c (patch) | |
tree | 0585601759ccbae2ed2abecedaf16e06b80676d0 /src/controls/qquickmenupopupwindow.cpp | |
parent | 4c184095d378622fb0c3bb1692b331b3cc04e010 (diff) | |
parent | 04e000d2b1719696581bb4ae6ec21e39236ef38c (diff) | |
download | qtquickcontrols-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.cpp | 28 |
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 |