When a view wrapper creates its view, it initializes the attribute-to-attribute connections in the parent part. In Version 3.0, this initialization forces the view wrapper to always be the target of the alignment whether or not it is the target of the connection, and also whether or not the connection is unidirectional. In Version 4.0, this initialization changed to make it consistent with the initialization of any attribute-to-attribute connection. This means that if the target attribute is read-only or the source attribute's value is nil, and the connection is bidirectional (source attribute is not read-only and the target attribute's value is not nil), the source of the connection is aligned with the target; otherwise, the target of the connection is aligned with the source.
This change may cause changes in the behavior of your Version 3.0 applications. To minimize the cases where there is behavior change between 3.0 and 4.5, Version 5.5 migration will reverse all connections involving a view wrapper where the view wrapper was a source. At the end of migration, all connections involving view wrappers will have the view wrappers as targets.
The following table summarizes the different cases with results in Version
3.0 compared to results in Version 5.5, and the last column
Need user attention indicates the cases you might want to look at
after migration.
Connection | Source readOnly or target readOnly | Target readOnly or source nil | V3.0 result | V5.5 result | Migration restores V3.0 result | Needs your attention |
Parent A > Wrapper A
A unidirectional connection from attribute A of the parent part to attribute A of the view wrapper | true | true | No alignment | No alignment |
|
|
true | false | Parent A > Wrapper A | Parent A > Wrapper A |
|
| |
false | true | No alignment | No alignment |
|
| |
false | false | Parent A > Wrapper A | Parent A > Wrapper A |
|
| |
Wrapper A > Parent A
A unidirectional connection from attribute A of the view wrapper to attribute A of the parent part | true | true | No alignment | No alignment |
|
|
true | false | No alignment | Wrapper A > Parent A
The value of A in the parent part is set to the value of A in the view wrapper. | X | X | |
false | true | Parent A > Wrapper A | No alignment
No alignment takes place. | X | X | |
false | false | Parent A > Wrapper A | Wrapper A > Parent A
The value of A in the parent part is set to the value of A in the view wrapper. | X | X | |
Parent A <> Wrapper A
A bidirectional connection from attribute A of the parent part to attribute A of the view wrapper | true | true | No alignment | No alignment |
|
|
true | false | Parent A > Wrapper A | Parent A > Wrapper A |
|
| |
false | true | No alignment | Wrapper A > Parent A
The value of A in the parent part is set to the value of A in the view wrapper. | X | X | |
false | false | Parent A > Wrapper A | Parent A > Wrapper A |
|
| |
true | true | No alignment | No alignment |
|
| |
true | false | No alignment | Wrapper A > Parent A
The value of A in the parent part is set to the value of A in the view wrapper. | X | X | |
false | true | Parent A > Wrapper A | Parent A > Wrapper A |
|
| |
false | false | Parent A > Wrapper A | Wrapper A > Parent A
The value of A in the parent part is set to the value of A in the view wrapper. | X | X |