SubCanvas.st
changeset 1905 20ff18462cc6
parent 1895 a1b2502c91d7
child 1906 0b64cfae3419
--- a/SubCanvas.st	Wed Dec 13 10:43:34 2000 +0100
+++ b/SubCanvas.st	Fri Dec 15 16:46:45 2000 +0100
@@ -209,14 +209,18 @@
 !
 
 specHolder:aValueHolder
+    |oldSpec|
 
     specHolder notNil ifTrue:[
+        oldSpec := specHolder value.
         specHolder removeDependent:self
     ].
     (specHolder := aValueHolder) notNil ifTrue:[
         specHolder addDependent:self
     ].
-    self updateFromChannels
+    oldSpec ~~ specHolder value ifTrue:[
+        self updateFromChannels
+    ]
 ! !
 
 !SubCanvas methodsFor:'building'!
@@ -306,7 +310,7 @@
 
     "/ if the superView is not yet created,
     "/ we MUST delay building... (sigh)
-    superView isNil ifTrue:[
+    superView isNil ifTrue:[          
         lateBuild := true.
         ^ self
     ].
@@ -369,9 +373,15 @@
         ].
 
         [
+
             client buildSubCanvas:subSpec withBuilder:builder.
-
-            self scrolledView:clientView.
+            keepClientView ifFalse:[    
+                (scrolledView notNil and:[clientView isSubViewOf:scrolledView]) ifTrue:[
+                    self halt
+                ] ifFalse:[
+                    self scrolledView:clientView.
+                ]
+            ]
         ] valueNowOrOnUnwindDo:[
             savedView notNil ifTrue:[
                 builder window:savedView.
@@ -441,6 +451,7 @@
         client := nil.
         spec := #windowSpec.  "/ is that true ?
     ].
+
     self client:client spec:spec builder:nil
 
     "Modified: / 5.8.1999 / 13:35:26 / cg"
@@ -523,5 +534,5 @@
 !SubCanvas class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg2/SubCanvas.st,v 1.31 2000-11-22 17:30:13 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg2/SubCanvas.st,v 1.32 2000-12-15 15:46:45 tm Exp $'
 ! !