UIPainterView.st
changeset 75 c9779da5ce4e
parent 71 407d25aca670
child 78 a0a00603a8b6
--- a/UIPainterView.st	Mon Mar 03 11:04:20 1997 +0100
+++ b/UIPainterView.st	Mon Mar 03 11:06:01 1997 +0100
@@ -1780,7 +1780,7 @@
 undoSpecModify:aViewId
     "undo method when changing the specification for an object
     "
-    |builder view spec|
+    |builder view spec v|
 
     undoHistory isTransactionOpen ifFalse:[^ self].
 
@@ -1791,8 +1791,15 @@
         undoHistory addUndoBlock:[
             (view := self findViewWithId:aViewId) notNil ifTrue:[
                 builder := UIBuilder new.
-                spec setAttributesIn:view with:builder.
-                self elementChangedSize:view.
+                spec needsRebuildForAttributes ifTrue:[
+                    v := spec buildViewWithLayoutFor:builder in:view superView.
+                    v realize.    
+                    view destroy.
+                    view become:v.    
+                ] ifFalse:[
+                    spec setAttributesIn:view with:builder.
+                    self elementChangedSize:view.
+                ].
             ]
         ]
     ].
@@ -1806,7 +1813,7 @@
 updateFromSpec:aSpec
     "update current selected view from specification
     "
-    |props name builder|
+    |props name builder v|
 
     self singleSelection notNil ifTrue:[
         self withSelectionHiddenDo:[
@@ -1830,8 +1837,17 @@
                     ]
                 ].
 
-                aSpec setAttributesIn:aView with:builder.
-                self elementChangedSize:aView.
+                aSpec needsRebuildForAttributes ifTrue:[
+                    v := aSpec buildViewWithLayoutFor:builder in:aView superView.
+                    v realize.    
+                    aView destroy.
+                    device sync. device flush.
+                    aView becomeSameAs:v.
+                    inputView raise.
+                ] ifFalse:[
+                    aSpec setAttributesIn:aView with:builder.
+                    self elementChangedSize:aView.
+                ].
 
                 props tabable:aSpec tabable.
                 props defaultable:aSpec defaultable.
@@ -1845,6 +1861,7 @@
         self changed:#tree
     ].
 
+    "Modified: 1.3.1997 / 01:39:53 / cg"
 ! !
 
 !UIPainterView::ViewProperty class methodsFor:'documentation'!