aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMitch Curtis <mitch.curtis@qt.io>2020-02-13 14:24:36 +0100
committerMitch Curtis <mitch.curtis@qt.io>2020-02-20 15:47:48 +0100
commit09476c590ab13623130d5ac79045fa68e504be96 (patch)
tree72775754502f610299cb140815587140f3364161 /src
parentc1420ee5423dfa104d5ff87bc529b4530dc998d6 (diff)
Fix clicked() being emitted after doubleClicked()
Do as MouseArea does, and keep track of double clicks ourselves, otherwise we think the second click is a regular click. This is for mouse events only; for touch we have bigger problems to solve first: QTBUG-82146 Change-Id: I46e816d0cfa1bab98a0a1685915842ebd176e762 Fixes: QTBUG-82032 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/quicktemplates2/qquickabstractbutton.cpp7
-rw-r--r--src/quicktemplates2/qquickabstractbutton_p_p.h1
2 files changed, 7 insertions, 1 deletions
diff --git a/src/quicktemplates2/qquickabstractbutton.cpp b/src/quicktemplates2/qquickabstractbutton.cpp
index 969ab173..5520e074 100644
--- a/src/quicktemplates2/qquickabstractbutton.cpp
+++ b/src/quicktemplates2/qquickabstractbutton.cpp
@@ -176,7 +176,7 @@ void QQuickAbstractButtonPrivate::handleRelease(const QPointF &point)
if (wasPressed) {
emit q->released();
- if (!wasHeld)
+ if (!wasHeld && !wasDoubleClick)
trigger();
} else {
emit q->canceled();
@@ -186,6 +186,8 @@ void QQuickAbstractButtonPrivate::handleRelease(const QPointF &point)
stopPressRepeat();
else
stopPressAndHold();
+
+ wasDoubleClick = false;
}
void QQuickAbstractButtonPrivate::handleUngrab()
@@ -199,6 +201,7 @@ void QQuickAbstractButtonPrivate::handleUngrab()
q->setPressed(false);
stopPressRepeat();
stopPressAndHold();
+ wasDoubleClick = false;
emit q->canceled();
}
@@ -1078,8 +1081,10 @@ void QQuickAbstractButton::mousePressEvent(QMouseEvent *event)
void QQuickAbstractButton::mouseDoubleClickEvent(QMouseEvent *event)
{
+ Q_D(QQuickAbstractButton);
QQuickControl::mouseDoubleClickEvent(event);
emit doubleClicked();
+ d->wasDoubleClick = true;
}
void QQuickAbstractButton::timerEvent(QTimerEvent *event)
diff --git a/src/quicktemplates2/qquickabstractbutton_p_p.h b/src/quicktemplates2/qquickabstractbutton_p_p.h
index 7394f115..e079836d 100644
--- a/src/quicktemplates2/qquickabstractbutton_p_p.h
+++ b/src/quicktemplates2/qquickabstractbutton_p_p.h
@@ -122,6 +122,7 @@ public:
bool autoExclusive = false;
bool autoRepeat = false;
bool wasHeld = false;
+ bool wasDoubleClick = false;
int holdTimer = 0;
int delayTimer = 0;
int repeatTimer = 0;