HierarchicalItem.st
changeset 2340 2226773397c4
parent 2315 d709a664a87c
child 2343 bf4bdedf0fa7
--- a/HierarchicalItem.st	Tue Oct 29 11:22:51 2002 +0100
+++ b/HierarchicalItem.st	Tue Oct 29 13:59:09 2002 +0100
@@ -161,33 +161,35 @@
 at:anIndex put:anItem
     "replace a child by a new item
     "
-    |item list|
+    |children oldItem visIndex model expFlag|
 
     anItem isNil ifTrue:[
         ^ self removeFromIndex:anIndex toIndex:anIndex.
     ].
+    anItem parent:self.
 
-    (    (list := self children) isNil
-     or:[(item := list at:anIndex ifAbsent:nil) isNil]
-    ) ifTrue:[
-        ^ self subscriptBoundsError
+    (model := self model) isNil ifTrue:[
+        ^ self children at:anIndex put:anItem
     ].
 
-    self criticalDo:[ |expFlag newIdx|
-        item collapse.
-
-        (list := self children) notNil ifTrue:[
-            newIdx := list identityIndexOf:item.
+    model criticalDo:[
+        children := self children.
+        oldItem  := children at:anIndex.
 
-            newIdx ~~ 0 ifTrue:[
-                expFlag := anItem isExpanded.
-                anItem setExpanded:false.
-                list at:anIndex put:anItem.
-                self changed.
+        oldItem isExpanded ifTrue:[
+            oldItem collapse
+        ].
+        visIndex := model identityIndexOf:oldItem.
+        expFlag  := anItem isExpanded.
+        anItem setExpanded:false.
 
-                expFlag ifTrue:[anItem expand].
-            ].
+        children at:anIndex put:anItem.
+
+        visIndex ~~ 0 ifTrue:[
+            model at:anIndex put:anItem.
         ].
+        self changed:#redraw.
+        expFlag ifTrue:[ anItem expand ].
     ].
     ^ anItem
 !
@@ -1840,5 +1842,5 @@
 !HierarchicalItem class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg2/HierarchicalItem.st,v 1.49 2002-10-19 11:36:21 ca Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg2/HierarchicalItem.st,v 1.50 2002-10-29 12:59:09 ca Exp $'
 ! !