aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMartin Jones <martin.jones@nokia.com>2012-03-05 15:07:27 +1000
committerQt by Nokia <qt-info@nokia.com>2012-03-05 23:31:48 +0100
commit3f62886ac84b31c5c8f90205583dc65e811ad20b (patch)
tree5e78818004f64e491621265d7af8a73ee5b9712c /src
parent43ffdc3fc02eb058d7d458cb16a9c3cf07ea68eb (diff)
Handle MouseArea.enabled = false after mouse is pressed.
Currently this leaves the MouseArea in a broken state, i.e. still in pressed state, and the next press after it is re-enabled is ignored. In this case we now allow subsequent mouse move or release events to continue. Following the release, no further press will be accepted. Change-Id: I65a890da90e2166ad568505fffdbd3db6c97165b Reviewed-by: Andrew den Exter <andrew.den-exter@nokia.com>
Diffstat (limited to 'src')
-rw-r--r--src/quick/items/qquickmousearea.cpp12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/quick/items/qquickmousearea.cpp b/src/quick/items/qquickmousearea.cpp
index ec2c980879..ef57242319 100644
--- a/src/quick/items/qquickmousearea.cpp
+++ b/src/quick/items/qquickmousearea.cpp
@@ -697,7 +697,7 @@ void QQuickMouseArea::mousePressEvent(QMouseEvent *event)
void QQuickMouseArea::mouseMoveEvent(QMouseEvent *event)
{
Q_D(QQuickMouseArea);
- if (!d->absorb) {
+ if (!d->absorb && !d->pressed) {
QQuickItem::mouseMoveEvent(event);
return;
}
@@ -783,7 +783,7 @@ void QQuickMouseArea::mouseReleaseEvent(QMouseEvent *event)
{
Q_D(QQuickMouseArea);
d->stealMouse = false;
- if (!d->absorb) {
+ if (!d->absorb && !d->pressed) {
QQuickItem::mouseReleaseEvent(event);
} else {
d->saveEvent(event);
@@ -820,7 +820,7 @@ void QQuickMouseArea::mouseDoubleClickEvent(QMouseEvent *event)
void QQuickMouseArea::hoverEnterEvent(QHoverEvent *event)
{
Q_D(QQuickMouseArea);
- if (!d->absorb) {
+ if (!d->absorb && !d->pressed) {
QQuickItem::hoverEnterEvent(event);
} else {
d->lastPos = event->posF();
@@ -837,7 +837,7 @@ void QQuickMouseArea::hoverEnterEvent(QHoverEvent *event)
void QQuickMouseArea::hoverMoveEvent(QHoverEvent *event)
{
Q_D(QQuickMouseArea);
- if (!d->absorb) {
+ if (!d->absorb && !d->pressed) {
QQuickItem::hoverMoveEvent(event);
} else {
d->lastPos = event->posF();
@@ -854,7 +854,7 @@ void QQuickMouseArea::hoverMoveEvent(QHoverEvent *event)
void QQuickMouseArea::hoverLeaveEvent(QHoverEvent *event)
{
Q_D(QQuickMouseArea);
- if (!d->absorb)
+ if (!d->absorb && !d->pressed)
QQuickItem::hoverLeaveEvent(event);
else
setHovered(false);
@@ -935,7 +935,7 @@ bool QQuickMouseArea::sendMouseEvent(QMouseEvent *event)
bool QQuickMouseArea::childMouseEventFilter(QQuickItem *i, QEvent *e)
{
Q_D(QQuickMouseArea);
- if (!d->absorb || !isVisible() || !d->drag || !d->drag->filterChildren())
+ if (!d->pressed && (!d->absorb || !isVisible() || !d->drag || !d->drag->filterChildren()))
return QQuickItem::childMouseEventFilter(i, e);
switch (e->type()) {
case QEvent::MouseButtonPress: