summaryrefslogtreecommitdiff
path: root/tests/auto
diff options
context:
space:
mode:
authorJens Bache-Wiig <jens.bache-wiig@digia.com>2014-03-20 14:47:32 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-03-20 15:11:58 +0100
commit3adb18503a865e0bb826cb1b5be059572bb96594 (patch)
tree7a97e5f0d65392148d3350a8272660c25d4c1a5a /tests/auto
parent89f9aa0038b76a5e06cf2621bd588ce89f2c7189 (diff)
downloadqtquickcontrols-3adb18503a865e0bb826cb1b5be059572bb96594.tar.gz
Try to maintain bindings to checked property in CheckBox
It is currently impossible to keep a binding to the checked property because any external manipulation of checked will cause it to be internally overwritten based on the implicitly triggered checkedStateChanged signal. This adds a protection mechanism similar to what we already have on the checkedStateChanged signal. [ChangeLog][QtQuickControls][CheckBox]Fixed a problem incorrectly causing bindings to the checked state to break. Task-number: QTBUG-31627 Change-Id: I506fa34561529a414c7b088001f96e8f283edd89 Reviewed-by: Mitch Curtis <mitch.curtis@digia.com> Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
Diffstat (limited to 'tests/auto')
-rw-r--r--tests/auto/controls/data/tst_checkbox.qml39
1 files changed, 39 insertions, 0 deletions
diff --git a/tests/auto/controls/data/tst_checkbox.qml b/tests/auto/controls/data/tst_checkbox.qml
index 2e3469d6..278fb0e1 100644
--- a/tests/auto/controls/data/tst_checkbox.qml
+++ b/tests/auto/controls/data/tst_checkbox.qml
@@ -168,6 +168,45 @@ Item {
}
}
+ function test_check_keep_binding() {
+ var root = Qt.createQmlObject("import QtQuick 2.1; import QtQuick.Controls 1.1; \n"
+ + "Row { \n"
+ + " property alias checkBox1: checkBox1 \n"
+ + " property alias checkBox2: checkBox2 \n"
+ + " CheckBox { id: checkBox1 } \n"
+ + " CheckBox { id: checkBox2; checked: checkBox1.checked; enabled: false } \n"
+ + "}", container, "");
+
+ compare(root.checkBox1.checked, false);
+ compare(root.checkBox2.checked, false);
+ root.checkBox1.checked = true;
+ compare(root.checkBox1.checked, true);
+ compare(root.checkBox2.checked, true);
+ root.checkBox1.checked = false;
+ compare(root.checkBox1.checked, false);
+ compare(root.checkBox2.checked, false);
+ }
+
+ function test_checkState_keep_binding() {
+ var root = Qt.createQmlObject("import QtQuick 2.1; import QtQuick.Controls 1.1; \n"
+ + "Row { \n"
+ + " property alias checkBox1: checkBox1 \n"
+ + " property alias checkBox2: checkBox2 \n"
+ + " CheckBox { id: checkBox1 } \n"
+ + " CheckBox { id: checkBox2; checkedState: checkBox1.checkedState; enabled: false } \n"
+ + "}", container, "");
+
+ compare(root.checkBox1.checkedState, Qt.Unchecked);
+ compare(root.checkBox2.checkedState, Qt.Unchecked);
+ root.checkBox1.checkedState = Qt.Checked;
+ compare(root.checkBox1.checkedState, Qt.Checked);
+ compare(root.checkBox2.checkedState, Qt.Checked);
+ root.checkBox1.checkedState = Qt.Unchecked;
+ compare(root.checkBox1.checkedState, Qt.Unchecked);
+ compare(root.checkBox2.checkedState, Qt.Unchecked);
+ }
+
+
function test_exclusiveGroup() {
var root = Qt.createQmlObject("import QtQuick 2.1; import QtQuick.Controls 1.1; \n"
+ "Row { \n"