** Description changed:
Often a CheckBox/Switch is used to show the value of a property outside
of the CheckBox. For example:
Switch {
id: hiddenSwitch
checked: !header.exposed
onClicked: header.exposed = !header.exposed
}
At first look, this code may seem fine, but clicking the switch will
trigger checked = !checked, which breaks the binding, so if
header.exposed updates because of events happening outside of the
switch, the switch will be out-of-sync.
+ Perhaps we need to add some properties to the CheckBox:
+
+ CheckBox {
+ property Object bindTarget
+ property string bindProperty
+ }
+
+ and then the behavior of this:
+ Switch {
+ id: exposedSwitch
+ bindTarget: header
+ bindProperty: "exposed"
+ }
+
+ can do what we want: the switch shows the value of "exposed", and
+ clicking the switch should update the "exposed" value (which in turn
+ will update the state of the switch).
+
+ Note that in this case we could not track "!exposed", so if we need
+ that, some more complicated solution is needed.
+
--- update 2015-09-11 (thanks Christian) ---
It appears to work like this:
Switch {
- id: hiddenSwitch
- checked: header.exposed
- function trigger() { header.exposed = !header.exposed; }
+ id: hiddenSwitch
+ checked: header.exposed
+ function trigger() { header.exposed = !header.exposed; }
}
so DON'T use the onClicked or onTriggered signal as you would expect,
but override the trigger() function. We need to document this.
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1494387
Title:
CheckBox needs to track external properties
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/ubuntu-ui-toolkit/+bug/1494387/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs