Migration Guide : Migrating from VisualAge Smalltalk V3.0 or earlier : Other migration concerns : View wrappers that use attribute-to-attribute connections
View wrappers that use attribute-to-attribute connections
When a view wrapper creates its view, it initializes the attribute-to-attribute connections in the parent part. In VisualAge Smalltalk V3.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 VisualAge Smalltalk V4.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 VisualAge Smalltalk V3.0 and VisualAge Smalltalk V4.5, the current VA Smalltalk 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 VisualAge Smalltalk V3.0 compared to results in the current version of VA Smalltalk, and the last column Need user attention indicates the cases you might want to look at after migration.
Connection
Parent A > Wrapper A
A unidirectional connection from attribute A of the parent part to attribute A of the view wrapper
 
Source readOnly or target readOnly
Target readOnly or source nil
V3.0 result
VA Smalltalk result
Migration restores V3.0 result
Needs your attention
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
 
 
 
Connection
Wrapper A > Parent A
A unidirectional connection from attribute A of the view wrapper to attribute A of the parent part
 
Source readOnly or target readOnly
Target readOnly or source nil
V3.0 result
VA Smalltalk result
Migration restores V3.0 result
Needs your attention
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
 
 
 
Connection
Parent A <> Wrapper A
A bidirectional connection from attribute A of the parent part to attribute A of the view wrapper
 
Source readOnly or target readOnly
Target readOnly or source nil
V3.0 result
VA Smalltalk result
Migration restores V3.0 result
Needs your attention
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
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.
 
 
 
 
Last modified date: 05/13/2020