# HG changeset patch # User ca # Date 876911512 -7200 # Node ID 7cf5f021983dbf3bdb28ec699816a87da5be993f # Parent 0e04616de48c57360ab9467ca1cce8542a4f7ad3 add method: #updateFromChannels diff -r 0e04616de48c -r 7cf5f021983d SubCanvas.st --- 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 $' ! !