HierarchicalItem.st
changeset 1831 8efa00e1247a
parent 1818 fe99c5c721e9
child 1843 61595a6b2e37
--- a/HierarchicalItem.st	Tue Sep 05 22:50:03 2000 +0200
+++ b/HierarchicalItem.st	Wed Sep 06 14:41:59 2000 +0200
@@ -673,7 +673,7 @@
     |model|
 
     (what ~~ #hierarchy and:[what ~~ #icon]) ifTrue:[
-        width := nil
+        width := height := nil
     ].
 
     (model := self model) notNil ifTrue:[
@@ -730,24 +730,30 @@
     "evaluate a block on each child starting with the
      child at startIndex to the endIndex.
     "
-    self children size ~~ 0 ifTrue:[
+    |children|
+
+    children := self children.
+
+    children size ~~ 0 ifTrue:[
         self criticalDo:[
             children from:startIndex to:endIndex do:aOneArgBlock
         ]
     ]
-
 !
 
 from:startIndex to:endIndex reverseDo:aOneArgBlock
     "evaluate a block on each child starting with the
      child at endIndex to the startIndex.
     "
-    self children size ~~ 0 ifTrue:[
+    |children|
+
+    children := self children.
+
+    children size ~~ 0 ifTrue:[
         self criticalDo:[
             children from:startIndex to:endIndex reverseDo:aOneArgBlock
         ]
     ]
-
 !
 
 recursiveCollect:aBlock
@@ -781,7 +787,11 @@
     "evaluate a block on each item and all the sub-items;
      proccesing children in reverse direction
     "
-    self children size ~~ 0 ifTrue:[
+    |children|
+
+    children := self children.
+
+    children size ~~ 0 ifTrue:[
         self criticalDo:[
             children reverseDo:[:aChild|
                 aChild reverseRecursiveDo:aOneArgBlock.
@@ -789,7 +799,6 @@
             ]
         ]
     ].
-
 !
 
 recursiveSelect:aBlock
@@ -813,7 +822,11 @@
     "evaluate a block on each child
      proccesing children in reverse direction
     "
-    self children size ~~ 0 ifTrue:[
+    |children|
+
+    children := self children.
+
+    children size ~~ 0 ifTrue:[
         self criticalDo:[children reverseDo:aOneArgBlock]
     ]
 !
@@ -822,9 +835,11 @@
     "return a new collection with all children from the receiver, for which
      the argument aBlock evaluates to true.
     "
-    |newCollection|
+    |newCollection children|
 
-    self children size == 0 ifTrue:[
+    children := self children.
+
+    children size == 0 ifTrue:[
         ^ #()
     ].
 
@@ -1117,6 +1132,28 @@
         ^ model middleButtonMenuFor:self
     ].
     ^ nil
+!
+
+recursiveSortChildren:aSortBlock
+
+    |children|
+
+    (children := self children) notNil ifTrue:[
+        self criticalDo:[
+            children sort:aSortBlock.
+            children do:[:aChild| aChild recursiveSortChildren:aSortBlock ]
+        ]
+    ].
+!
+
+sortChildren:aSortBlock
+    |children|
+
+    (children := self children) notNil ifTrue:[
+        self criticalDo:[
+            children sort:aSortBlock
+        ]
+    ].
 ! !
 
 !HierarchicalItem methodsFor:'protocol displaying'!
@@ -1510,5 +1547,5 @@
 !HierarchicalItem class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg2/HierarchicalItem.st,v 1.23 2000-08-21 22:44:18 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg2/HierarchicalItem.st,v 1.24 2000-09-06 12:41:59 cg Exp $'
 ! !