--- a/SubCanvas.st Wed Oct 15 12:29:40 1997 +0200
+++ b/SubCanvas.st Wed Oct 15 12:31:52 1997 +0200
@@ -85,7 +85,7 @@
(clientHolder := aValueHolder) notNil ifTrue:[
clientHolder addDependent:self
].
- self client:clientHolder value
+ self updateFromChannels
!
specHolder
@@ -100,7 +100,7 @@
(specHolder := aValueHolder) notNil ifTrue:[
specHolder addDependent:self
].
-
+ self updateFromChannels
! !
!SubCanvas methodsFor:'building'!
@@ -146,17 +146,35 @@
update:something with:aParameter from:changedObject
"one of my models changed its value
"
- changedObject == clientHolder ifTrue:[^ self client:(clientHolder value)].
- changedObject == specHolder ifTrue:[
- client isNil ifTrue:[
- (client := self application) notNil ifTrue:[
- builder := client builder
- ]
- ].
- ^ self spec:(specHolder value)
+ (changedObject == clientHolder or:[changedObject == specHolder]) ifTrue:[
+ self updateFromChannels
+ ] ifFalse:[
+ super update:something with:aParameter from:changedObject.
+ ]
+
+!
+
+updateFromChannels
+ "update canvas from channel
+ "
+ |client spec|
+
+ clientHolder isNil ifTrue:[
+ client := self application
+ ] ifFalse:[
+ client := clientHolder value
].
- super update:something with:aParameter from:changedObject.
+ specHolder isNil ifTrue:[
+ spec := #windowSpec
+ ] ifFalse:[
+ spec := specHolder value
+ ].
+ (client notNil and:[spec notNil]) ifTrue:[
+ self client:client spec:spec
+ ] ifFalse:[
+ self client:nil
+ ]
! !
@@ -185,5 +203,5 @@
!SubCanvas class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libwidg2/SubCanvas.st,v 1.4 1997-10-12 11:29:49 ca Exp $'
+ ^ '$Header: /cvs/stx/stx/libwidg2/SubCanvas.st,v 1.5 1997-10-15 10:31:52 ca Exp $'
! !