aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/quicktemplates2/qquickabstractbutton.cpp4
-rw-r--r--tests/auto/controls/data/tst_abstractbutton.qml16
2 files changed, 19 insertions, 1 deletions
diff --git a/src/quicktemplates2/qquickabstractbutton.cpp b/src/quicktemplates2/qquickabstractbutton.cpp
index c0ce6978..9157b4f9 100644
--- a/src/quicktemplates2/qquickabstractbutton.cpp
+++ b/src/quicktemplates2/qquickabstractbutton.cpp
@@ -204,7 +204,9 @@ void QQuickAbstractButtonPrivate::handleUngrab()
bool QQuickAbstractButtonPrivate::isPressAndHoldConnected()
{
Q_Q(QQuickAbstractButton);
- IS_SIGNAL_CONNECTED(q, QQuickAbstractButton, pressAndHold, ());
+ const auto signal = &QQuickAbstractButton::pressAndHold;
+ const QMetaMethod method = QMetaMethod::fromSignal(signal);
+ return q->isSignalConnected(method);
}
void QQuickAbstractButtonPrivate::startPressAndHold()
diff --git a/tests/auto/controls/data/tst_abstractbutton.qml b/tests/auto/controls/data/tst_abstractbutton.qml
index 7bfa17c5..80155f69 100644
--- a/tests/auto/controls/data/tst_abstractbutton.qml
+++ b/tests/auto/controls/data/tst_abstractbutton.qml
@@ -865,4 +865,20 @@ TestCase {
compare(button3.checked, false)
compare(button3.action.checked, false)
}
+
+ function test_clickedAfterLongPress() {
+ var control = createTemporaryObject(button, testCase, { text: "Hello" })
+ verify(control)
+
+ var clickedSpy = signalSpy.createObject(control, { target: control, signalName: "clicked" })
+ verify(clickedSpy.valid)
+
+ mousePress(control)
+ // Ensure that clicked is emitted when no handler is defined for the pressAndHold() signal.
+ // Note that even though signal spies aren't considered in QObject::isSignalConnected(),
+ // we can't use one here to check for pressAndHold(), because otherwise clicked() won't be emitted.
+ wait(Qt.styleHints.mousePressAndHoldInterval + 100)
+ mouseRelease(control)
+ compare(clickedSpy.count, 1)
+ }
}