--- 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'!