From 6ec67932271d3a20e76587bc040dc7b76e16bb57 Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Tue, 22 Oct 2013 16:14:10 +0200 Subject: 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 --- tests/auto/controls/data/tst_button.qml | 68 +++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) (limited to 'tests') 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() + } } } -- cgit v1.2.1