--- a/SubCanvas.st Tue Oct 11 09:40:38 2005 +0200
+++ b/SubCanvas.st Fri Oct 14 01:15:46 2005 +0200
@@ -78,6 +78,10 @@
^ builder
!
+builder:aBuilder
+ builder := aBuilder
+!
+
client
"return the value of the instance variable 'client' (automatically generated)"
@@ -186,14 +190,18 @@
!
clientHolder:aValueHolder
+ |oldClient|
clientHolder notNil ifTrue:[
+ oldClient := clientHolder value.
clientHolder removeDependent:self
].
(clientHolder := aValueHolder) notNil ifTrue:[
clientHolder addDependent:self
].
- self updateFromChannels
+ oldClient ~~ clientHolder value ifTrue:[
+ self updateFromChannels
+ ]
!
clientView:aView
@@ -221,6 +229,28 @@
oldSpec ~~ specHolder value ifTrue:[
self updateFromChannels
]
+!
+
+specHolder:newSpecHolder clientHolder:newClientHolder
+ |oldSpec oldClient|
+
+ clientHolder notNil ifTrue:[
+ oldClient := clientHolder value.
+ clientHolder removeDependent:self
+ ].
+ specHolder notNil ifTrue:[
+ oldSpec := specHolder value.
+ specHolder removeDependent:self
+ ].
+ (specHolder := newSpecHolder) notNil ifTrue:[
+ specHolder addDependent:self
+ ].
+ (clientHolder := newClientHolder) notNil ifTrue:[
+ clientHolder addDependent:self
+ ].
+ ((oldSpec ~~ specHolder value) or:[oldClient ~~ clientHolder value]) ifTrue:[
+ self updateFromChannels
+ ]
! !
!SubCanvas methodsFor:'building'!
@@ -444,30 +474,31 @@
updateFromChannels
"update canvas from channel
"
- |client spec bldr|
+ |newClient newSpec bldr|
clientHolder isNil ifTrue:[
- client := self application.
+ newClient := self application.
bldr := UIBuilder new.
bldr isSubBuilder:true.
] ifFalse:[
- client := clientHolder value
+ newClient := clientHolder value
].
specHolder isNil ifTrue:[
- spec := #windowSpec
+ newSpec := #windowSpec
] ifFalse:[
- spec := specHolder value
+ newSpec := specHolder value
].
- (client notNil and:[spec notNil]) ifTrue:[
+
+ (newClient notNil and:[newSpec notNil]) ifTrue:[
] ifFalse:[
"/ spec notNil ifTrue:[
"/ self halt:'spec but no app'.
"/ ].
- client := nil.
- spec := #windowSpec. "/ is that true ?
+ newClient := nil.
+ newSpec := #windowSpec. "/ is that true ?
].
- self client:client spec:spec builder:bldr
+ self client:newClient spec:newSpec builder:bldr
"Modified: / 5.8.1999 / 13:35:26 / cg"
! !
@@ -549,5 +580,5 @@
!SubCanvas class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libwidg2/SubCanvas.st,v 1.52 2004-08-19 10:10:21 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libwidg2/SubCanvas.st,v 1.53 2005-10-13 23:15:46 cg Exp $'
! !