aboutsummaryrefslogtreecommitdiffstats
path: root/src/templates/qquickoverlay.cpp
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@theqtcompany.com>2016-01-27 13:11:14 +0100
committerJ-P Nurmi <jpnurmi@theqtcompany.com>2016-01-28 09:29:22 +0000
commitde74c0ee3eab435f2a95849216129ac8e7043972 (patch)
treeacec13d74c8f170d3f3161f87d87c9342f34aae2 /src/templates/qquickoverlay.cpp
parent8d8bc174243215715cb0e9143f230158c357ece1 (diff)
Add Popup::closePolicy
Change-Id: Ie3d0f50a59aeaab36ec388af897cbf2596269ce3 Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com>
Diffstat (limited to 'src/templates/qquickoverlay.cpp')
-rw-r--r--src/templates/qquickoverlay.cpp18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/templates/qquickoverlay.cpp b/src/templates/qquickoverlay.cpp
index bef6193d..ab32d118 100644
--- a/src/templates/qquickoverlay.cpp
+++ b/src/templates/qquickoverlay.cpp
@@ -35,7 +35,7 @@
****************************************************************************/
#include "qquickoverlay_p.h"
-#include "qquickpopup_p.h"
+#include "qquickpopup_p_p.h"
#include "qquickdrawer_p.h"
#include <QtQml/qqmlinfo.h>
#include <QtQml/qqmlproperty.h>
@@ -225,6 +225,14 @@ void QQuickOverlay::mousePressEvent(QMouseEvent *event)
Q_D(QQuickOverlay);
event->setAccepted(d->modalPopups > 0);
emit pressed();
+
+ foreach (QQuickPopup *popup, d->popups) {
+ if (popup->closePolicy().testFlag(QQuickPopup::OnPressOutside)) {
+ QQuickItem *popupItem = QQuickPopupPrivate::get(popup)->popupItem;
+ if (!popupItem->contains(mapToItem(popupItem, event->pos())))
+ popup->close();
+ }
+ }
}
void QQuickOverlay::mouseMoveEvent(QMouseEvent *event)
@@ -238,6 +246,14 @@ void QQuickOverlay::mouseReleaseEvent(QMouseEvent *event)
Q_D(QQuickOverlay);
event->setAccepted(d->modalPopups > 0);
emit released();
+
+ foreach (QQuickPopup *popup, d->popups) {
+ if (popup->closePolicy().testFlag(QQuickPopup::OnReleaseOutside)) {
+ QQuickItem *popupItem = QQuickPopupPrivate::get(popup)->popupItem;
+ if (!popupItem->contains(mapToItem(popupItem, event->pos())))
+ popup->close();
+ }
+ }
}
void QQuickOverlay::wheelEvent(QWheelEvent *event)