summaryrefslogtreecommitdiff
path: root/tests/auto/controls/data/tst_button.qml
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@digia.com>2013-10-22 16:14:10 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-10-22 18:00:58 +0200
commit6ec67932271d3a20e76587bc040dc7b76e16bb57 (patch)
tree128317989390815be8ff85636c9e0dd4328a3ae7 /tests/auto/controls/data/tst_button.qml
parent3a0b205b2ceafc8a98951706850a9b13265d6233 (diff)
downloadqtquickcontrols-6ec67932271d3a20e76587bc040dc7b76e16bb57.tar.gz
Fix checkable Button behavior - toggle on release instead of press
This way it's consistent with QPushButton, and this is also the appropriate behavior on touch screens. Task-number: QTBUG-33796 Change-Id: I6ab11ed199223cd77e08273f1299a8a668a6f786 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
Diffstat (limited to 'tests/auto/controls/data/tst_button.qml')
-rw-r--r--tests/auto/controls/data/tst_button.qml68
1 files changed, 68 insertions, 0 deletions
diff --git a/tests/auto/controls/data/tst_button.qml b/tests/auto/controls/data/tst_button.qml
index 3836951c..5aba4376 100644
--- a/tests/auto/controls/data/tst_button.qml
+++ b/tests/auto/controls/data/tst_button.qml
@@ -197,5 +197,73 @@ TestCase {
verify(!control.control3.activeFocus)
control.destroy()
}
+
+ SignalSpy {
+ id: checkSpy
+ signalName: "checkedChanged"
+ }
+
+ function test_checked() {
+ var button = Qt.createQmlObject('import QtQuick.Controls 1.1; Button { checkable: true }', container, '')
+
+ var checkCount = 0
+
+ checkSpy.clear()
+ checkSpy.target = button
+ verify(checkSpy.valid)
+ verify(!button.checked)
+
+ // stays unchecked on press
+ mousePress(button, button.width / 2, button.height / 2)
+ verify(button.pressed)
+ verify(!button.checked)
+ compare(checkSpy.count, checkCount)
+
+ // gets checked on release inside
+ mouseRelease(button, button.width / 2, button.height / 2)
+ verify(!button.pressed)
+ verify(button.checked)
+ compare(checkSpy.count, ++checkCount)
+
+ // stays checked on press
+ mousePress(button, button.width / 2, button.height / 2)
+ verify(button.pressed)
+ verify(button.checked)
+ compare(checkSpy.count, checkCount)
+
+ // stays checked on release outside
+ mouseMove(button, button.width * 2, button.height * 2)
+ mouseRelease(button, button.width * 2, button.height * 2)
+ verify(!button.pressed)
+ verify(button.checked)
+ compare(checkSpy.count, checkCount)
+
+ // stays checked on press
+ mousePress(button, button.width / 2, button.height / 2)
+ verify(button.pressed)
+ verify(button.checked)
+ compare(checkSpy.count, checkCount)
+
+ // gets unchecked on release inside
+ mouseRelease(button, button.width / 2, button.height / 2)
+ verify(!button.pressed)
+ verify(!button.checked)
+ compare(checkSpy.count, ++checkCount)
+
+ // stays unchecked on press
+ mousePress(button, button.width / 2, button.height / 2)
+ verify(button.pressed)
+ verify(!button.checked)
+ compare(checkSpy.count, checkCount)
+
+ // stays unchecked on release outside
+ mouseMove(button, button.width * 2, button.height * 2)
+ mouseRelease(button, button.width * 2, button.height * 2)
+ verify(!button.pressed)
+ verify(!button.checked)
+ compare(checkSpy.count, checkCount)
+
+ button.destroy()
+ }
}
}