touch-packages team mailing list archive
-
touch-packages team
-
Mailing list archive
-
Message #102627
[Bug 1494387] Re: CheckBox needs to track external properties
More people run into problems here: http://pastebin.ubuntu.com/12417204/
--
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to ubuntu-ui-toolkit in
Ubuntu.
https://bugs.launchpad.net/bugs/1494387
Title:
CheckBox needs to track external properties
Status in ubuntu-ui-toolkit package in Ubuntu:
Confirmed
Bug description:
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; }
}
so DON'T use the onClicked or onTriggered signal as you would expect,
but override the trigger() function. We need to document this.
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/ubuntu-ui-toolkit/+bug/1494387/+subscriptions
References