UIPainter.st
changeset 1356 189c9cec8ce6
parent 1341 83fe4fae7c10
child 1357 ba372586f899
--- a/UIPainter.st	Wed Feb 16 13:40:28 2000 +0100
+++ b/UIPainter.st	Thu Feb 17 10:13:33 2000 +0100
@@ -3658,15 +3658,44 @@
 canvasSpec
     "returns spec assigned to canvas"
 
-    |spec|
+    |spec list key block exported cls canvas|
 
     spec := WindowSpec new.
-
-    spec fromView:(self canvas topView) callBack:nil.
+    canvas := self canvas.
+
+    spec fromView:(canvas topView) callBack:nil.
+
     windowSpec notNil ifTrue:[
-	spec copyValuesFromSpec:windowSpec
+        spec copyValuesFromSpec:windowSpec.
     ].
-    ^ spec
+
+    spec exportedAspects isNil ifTrue:[
+        exported := IdentitySet new.
+
+        (     (cls  := canvas className) notNil
+         and:[(cls  := canvas resolveName:cls) notNil
+         and:[(list := cls perform:#aspectSelectors ifNotUnderstood:nil) notNil]]
+        ) ifTrue:[
+            list do:[:el| exported add:el]
+        ].
+        spec exportedAspects:exported.
+
+        windowSpec notNil ifTrue:[
+            windowSpec exportedAspects:(exported copy)
+        ].
+    ].
+
+    list  := OrderedCollection new.
+    block := [:k|
+        (k isSymbol and:[(list includesIdentical:k) not]) ifTrue:[list add:k]
+    ].
+
+    self propertiesDo:[:aProp|
+        block value:(aProp model).
+        aProp spec aspectSelectors do:block.
+    ].
+    spec listOfExportedAspects:list.
+  ^ spec
 
 !