diff options
author | Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com> | 2015-06-24 18:26:42 +0200 |
---|---|---|
committer | Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com> | 2015-06-26 08:35:54 +0000 |
commit | d88d9d63422c086417e8cc1935f8d3376043f845 (patch) | |
tree | 4d3c24e4daeb25eba3aa692062f165d33017093f /src | |
parent | 8c5100ca39776c7a1b307a74961ee696f1163bcc (diff) |
QQuickControl: Accept all the mouse events by default
Controls are mouse-opaque items in the sense that, if
the control doesn't do anything with the mouse (or touch)
event, there's no need to propagate it further. This avoids
issues with controls like ToolBar, where clicking on its
background may send the mouse event to an item below it.
Change-Id: Ib3c95a55db2abfd6a13333f4b0187852a656ec03
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>
Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/controls/qquickbutton.cpp | 3 | ||||
-rw-r--r-- | src/controls/qquickcontrol.cpp | 15 | ||||
-rw-r--r-- | src/controls/qquickcontrol_p.h | 3 | ||||
-rw-r--r-- | src/controls/qquickscrollbar.cpp | 3 | ||||
-rw-r--r-- | src/controls/qquickslider.cpp | 3 |
5 files changed, 18 insertions, 9 deletions
diff --git a/src/controls/qquickbutton.cpp b/src/controls/qquickbutton.cpp index e8967a13..ffdd00bd 100644 --- a/src/controls/qquickbutton.cpp +++ b/src/controls/qquickbutton.cpp @@ -229,14 +229,12 @@ void QQuickButton::mousePressEvent(QMouseEvent *event) QQuickControl::mousePressEvent(event); setPressed(true); emit pressed(); - event->accept(); } void QQuickButton::mouseMoveEvent(QMouseEvent *event) { QQuickControl::mouseMoveEvent(event); setPressed(contains(event->pos())); - event->accept(); } void QQuickButton::mouseReleaseEvent(QMouseEvent *event) @@ -251,7 +249,6 @@ void QQuickButton::mouseReleaseEvent(QMouseEvent *event) } else { emit canceled(); } - event->accept(); } void QQuickButton::mouseUngrabEvent() diff --git a/src/controls/qquickcontrol.cpp b/src/controls/qquickcontrol.cpp index e2efbf02..5415ff8e 100644 --- a/src/controls/qquickcontrol.cpp +++ b/src/controls/qquickcontrol.cpp @@ -454,6 +454,21 @@ void QQuickControl::setContentItem(QQuickItem *item) } } +void QQuickControl::mousePressEvent(QMouseEvent *event) +{ + event->accept(); +} + +void QQuickControl::mouseMoveEvent(QMouseEvent *event) +{ + event->accept(); +} + +void QQuickControl::mouseReleaseEvent(QMouseEvent *event) +{ + event->accept(); +} + void QQuickControl::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) { Q_D(QQuickControl); diff --git a/src/controls/qquickcontrol_p.h b/src/controls/qquickcontrol_p.h index 5090985c..77d33f05 100644 --- a/src/controls/qquickcontrol_p.h +++ b/src/controls/qquickcontrol_p.h @@ -126,6 +126,9 @@ Q_SIGNALS: protected: QQuickControl(QQuickControlPrivate &dd, QQuickItem *parent); + void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE; + void mouseMoveEvent(QMouseEvent *event) Q_DECL_OVERRIDE; + void mouseReleaseEvent(QMouseEvent *event) Q_DECL_OVERRIDE; void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) Q_DECL_OVERRIDE; virtual void mirrorChange(); diff --git a/src/controls/qquickscrollbar.cpp b/src/controls/qquickscrollbar.cpp index 48f85a84..aaa0e007 100644 --- a/src/controls/qquickscrollbar.cpp +++ b/src/controls/qquickscrollbar.cpp @@ -262,7 +262,6 @@ void QQuickScrollBar::mousePressEvent(QMouseEvent *event) if (d->offset < 0 || d->offset > d->size) d->offset = d->size / 2; setPressed(true); - event->accept(); } void QQuickScrollBar::mouseMoveEvent(QMouseEvent *event) @@ -270,7 +269,6 @@ void QQuickScrollBar::mouseMoveEvent(QMouseEvent *event) Q_D(QQuickScrollBar); QQuickControl::mouseMoveEvent(event); setPosition(qBound(0.0, positionAt(event->pos()) - d->offset, 1.0 - d->size)); - event->accept(); } void QQuickScrollBar::mouseReleaseEvent(QMouseEvent *event) @@ -280,7 +278,6 @@ void QQuickScrollBar::mouseReleaseEvent(QMouseEvent *event) setPosition(qBound(0.0, positionAt(event->pos()) - d->offset, 1.0 - d->size)); d->offset = 0.0; setPressed(false); - event->accept(); } qreal QQuickScrollBar::positionAt(const QPoint &point) const diff --git a/src/controls/qquickslider.cpp b/src/controls/qquickslider.cpp index 10cd7716..a93e0607 100644 --- a/src/controls/qquickslider.cpp +++ b/src/controls/qquickslider.cpp @@ -499,7 +499,6 @@ void QQuickSlider::mousePressEvent(QMouseEvent *event) QQuickControl::mousePressEvent(event); d->pressPoint = event->pos(); setPressed(true); - event->accept(); } void QQuickSlider::mouseMoveEvent(QMouseEvent *event) @@ -518,7 +517,6 @@ void QQuickSlider::mouseMoveEvent(QMouseEvent *event) pos = d->snapPosition(pos); d->setPosition(pos); } - event->accept(); } void QQuickSlider::mouseReleaseEvent(QMouseEvent *event) @@ -534,7 +532,6 @@ void QQuickSlider::mouseReleaseEvent(QMouseEvent *event) setKeepMouseGrab(false); } setPressed(false); - event->accept(); } void QQuickSlider::mouseUngrabEvent() |