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