aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@theqtcompany.com>2016-02-29 15:38:08 +0100
committerJ-P Nurmi <jpnurmi@theqtcompany.com>2016-03-01 19:57:47 +0000
commit567dc4de269317e81facd08f5b5f1e31b0b6cc65 (patch)
tree811d91c9a93c2eed8dc4d4cea7269ef7b4aaf32d /src
parent758b2b27f30bbec3af2b6dafc94bf20098defdfa (diff)
Add QQuickPopup::childMouseEventFilter() for QQuickDrawer
QQuickDrawer needs to be able to filter child mouse events so that the drawer can be closed by dragging also over the drawer, not just outside. Change-Id: I5b9978ebdf33cd0095d6cf67a0d76eee2edae8b6 Task-number: QTBUG-51007 Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com>
Diffstat (limited to 'src')
-rw-r--r--src/templates/qquickpopup.cpp25
-rw-r--r--src/templates/qquickpopup_p.h4
-rw-r--r--src/templates/qquickpopup_p_p.h1
3 files changed, 30 insertions, 0 deletions
diff --git a/src/templates/qquickpopup.cpp b/src/templates/qquickpopup.cpp
index 8e5637b5..5e105d9d 100644
--- a/src/templates/qquickpopup.cpp
+++ b/src/templates/qquickpopup.cpp
@@ -268,6 +268,12 @@ QQuickPopupItem::QQuickPopupItem(QQuickPopup *popup) :
setAcceptedMouseButtons(Qt::AllButtons);
}
+bool QQuickPopupItem::childMouseEventFilter(QQuickItem *child, QEvent *event)
+{
+ Q_D(QQuickPopupItem);
+ return d->popup->childMouseEventFilter(child, event);
+}
+
void QQuickPopupItem::focusInEvent(QFocusEvent *event)
{
Q_D(QQuickPopupItem);
@@ -1501,6 +1507,18 @@ void QQuickPopup::setExit(QQuickTransition *transition)
emit exitChanged();
}
+bool QQuickPopup::filtersChildMouseEvents() const
+{
+ Q_D(const QQuickPopup);
+ return d->popupItem->filtersChildMouseEvents();
+}
+
+void QQuickPopup::setFiltersChildMouseEvents(bool filter)
+{
+ Q_D(QQuickPopup);
+ d->popupItem->setFiltersChildMouseEvents(filter);
+}
+
void QQuickPopup::classBegin()
{
}
@@ -1526,6 +1544,13 @@ bool QQuickPopup::eventFilter(QObject *object, QEvent *event)
return false;
}
+bool QQuickPopup::childMouseEventFilter(QQuickItem *child, QEvent *event)
+{
+ Q_UNUSED(child);
+ Q_UNUSED(event);
+ return false;
+}
+
void QQuickPopup::focusInEvent(QFocusEvent *event)
{
event->accept();
diff --git a/src/templates/qquickpopup_p.h b/src/templates/qquickpopup_p.h
index f901e1c2..fa394638 100644
--- a/src/templates/qquickpopup_p.h
+++ b/src/templates/qquickpopup_p.h
@@ -253,6 +253,9 @@ public:
QQuickTransition *exit() const;
void setExit(QQuickTransition *transition);
+ bool filtersChildMouseEvents() const;
+ void setFiltersChildMouseEvents(bool filter);
+
public Q_SLOTS:
void open();
void close();
@@ -305,6 +308,7 @@ protected:
bool isComponentComplete() const;
bool eventFilter(QObject *object, QEvent *event) override;
+ virtual bool childMouseEventFilter(QQuickItem *child, QEvent *event);
virtual void focusInEvent(QFocusEvent *event);
virtual void focusOutEvent(QFocusEvent *event);
virtual void keyPressEvent(QKeyEvent *event);
diff --git a/src/templates/qquickpopup_p_p.h b/src/templates/qquickpopup_p_p.h
index a6fdcd00..f62a82ec 100644
--- a/src/templates/qquickpopup_p_p.h
+++ b/src/templates/qquickpopup_p_p.h
@@ -92,6 +92,7 @@ public:
explicit QQuickPopupItem(QQuickPopup *popup);
protected:
+ bool childMouseEventFilter(QQuickItem *child, QEvent *event) override;
void focusInEvent(QFocusEvent *event) override;
void focusOutEvent(QFocusEvent *event) override;
void keyPressEvent(QKeyEvent *event) override;