touch-packages team mailing list archive
-
touch-packages team
-
Mailing list archive
-
Message #101897
[Bug 1494387] Re: CheckBox needs to track external properties
Christian, you are right. Overriding the trigger() function works for
me!
However, we do not have this documented, and if I am not an exception
here, many developers may run into this issue, so I keep the bug open,
but I will update its description to say that we need documentation.
** 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
+ 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
+ --- update 2015-09-11 (thanks Christian) ---
+ It appears to work like this:
+ Switch {
+ id: hiddenSwitch
+ checked: header.exposed
+ function trigger() { header.exposed = !header.exposed; }
}
- 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.
+ so DON'T use the onClicked or onTriggered signal as you would expect,
+ but override the trigger() function. We need to document this.
** Changed in: ubuntu-ui-toolkit (Ubuntu)
Status: Incomplete => Confirmed
** Changed in: ubuntu-ui-toolkit (Ubuntu)
Importance: Undecided => High
--
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.
--- 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