grow arrays before inserting
authorca
Thu, 29 Jan 1998 12:59:11 +0100
changeset 1434 973b688dd208
parent 1433 9aa43cddb83e
child 1435 56de6db05972
grow arrays before inserting
MenuView.st
--- a/MenuView.st	Thu Jan 29 10:44:54 1998 +0100
+++ b/MenuView.st	Thu Jan 29 12:59:11 1998 +0100
@@ -655,26 +655,26 @@
      nMore "{ Class: SmallInteger }"|
 
     list isNil ifTrue:[
-	^ self addLabels:moreLabels selectors:moreSelectors
+        ^ self addLabels:moreLabels selectors:moreSelectors
     ].
     "
      be user friendly - allow both label or selector
      to be passed
     "
     aLabelOrSelectorOrNumber isNil ifTrue:[
-	idx := 1
+        idx := 1
     ] ifFalse:[
-	idx := self indexOf:aLabelOrSelectorOrNumber.
-	(idx between:2 and:(list size + 1)) ifFalse:[
-	    "add to beginning"
-	    idx := 1
-	]
+        idx := self indexOf:aLabelOrSelectorOrNumber.
+        (idx between:2 and:(list size + 1)) ifFalse:[
+            "add to beginning"
+            idx := 1
+        ]
     ].
 
     nMore := moreLabels size.
     "/ just a check
     moreSelectors size ~~ nMore ifTrue:[
-	^ self error
+        ^ self error
     ].
 
     oldSize := list size.
@@ -682,70 +682,82 @@
     list := list asOrderedCollection.
     i := idx.
     moreLabels do:[:aLabel |
-	list add:aLabel beforeIndex:i. i := i + 1.
+        list add:aLabel beforeIndex:i. i := i + 1.
     ].
 
     selectors := selectors asOrderedCollection.
     i := idx.
     moreSelectors do:[:sel |
-	selectors add:sel beforeIndex:i. i := i + 1.
+        selectors add:sel beforeIndex:i. i := i + 1.
     ].
 
     enableFlags := enableFlags asOrderedCollection.
     i := idx.
     nMore timesRepeat:[
-	enableFlags add:true beforeIndex:i. i := i + 1.
+        enableFlags add:true beforeIndex:i. i := i + 1.
     ].
 
     subMenus notNil ifTrue:[
-	subMenus := subMenus asOrderedCollection.
-	i := idx.
-	nMore timesRepeat:[
-	    subMenus add:nil beforeIndex:i. i := i + 1.
-	].
+        subMenus := subMenus asOrderedCollection.
+        i := idx.
+        i >= subMenus size ifTrue:[
+            subMenus grow:i-1
+        ].
+        nMore timesRepeat:[
+            subMenus add:nil beforeIndex:i. i := i + 1.
+        ].
     ].
     args notNil ifTrue:[
-	args := args asOrderedCollection.
-	i := idx.
-	nMore timesRepeat:[
-	    args add:nil beforeIndex:i. i := i + 1.
-	]
+        args := args asOrderedCollection.
+        i := idx.
+        i >= args size ifTrue:[
+            args grow:i-1
+        ].
+        nMore timesRepeat:[
+            args add:nil beforeIndex:i. i := i + 1.
+        ]
     ].
     actions notNil ifTrue:[
-	actions := actions asOrderedCollection.
-	i := idx.
-	nMore timesRepeat:[
-	    actions add:nil beforeIndex:i. i := i + 1.
-	]
+        actions := actions asOrderedCollection.
+        i := idx.
+        i >= actions size ifTrue:[
+            actions grow:i-1
+        ].
+        nMore timesRepeat:[
+            actions add:nil beforeIndex:i. i := i + 1.
+        ]
     ].
     onOffFlags notNil ifTrue:[
-	onOffFlags := onOffFlags asOrderedCollection.
-	i := idx.
-	nMore timesRepeat:[
-	    onOffFlags add:nil beforeIndex:i. i := i + 1.
-	]
+        onOffFlags := onOffFlags asOrderedCollection.
+        i := idx.
+        i >= onOffFlags size ifTrue:[
+            onOffFlags grow:i-1
+        ].
+        nMore timesRepeat:[
+            onOffFlags add:nil beforeIndex:i. i := i + 1.
+        ]
     ].
     shortKeys isNil ifTrue:[
-	shortKeys := OrderedCollection new:oldSize.
-	shortKeys grow:oldSize
+        shortKeys := OrderedCollection new:oldSize.
+        shortKeys grow:oldSize
     ].
     shortKeys := shortKeys asOrderedCollection.
     i := idx.
     shorties isNil ifTrue:[
-	nMore timesRepeat:[
-	    shortKeys add:nil beforeIndex:i. i := i + 1.
-	]
+        nMore timesRepeat:[
+            shortKeys add:nil beforeIndex:i. i := i + 1.
+        ]
     ] ifFalse:[
-	maxShortKeyStringLen := nil.
-	shorties do:[:sel |
-	    shortKeys add:sel beforeIndex:i. i := i + 1.
-	]
+        maxShortKeyStringLen := nil.
+        shorties do:[:sel |
+            shortKeys add:sel beforeIndex:i. i := i + 1.
+        ]
     ].
 
     shown ifTrue:[
-	self resize
+        self resize
     ] ifFalse:[
-	needResize := true
+        needResize := true
     ].
 
     "
@@ -759,36 +771,36 @@
      v2 contents:'before copy'.
      m := v2 editMenu.
      m
-	addLabels:#('new entry1' 'new entry2') 
-	selectors:#(foo bar) 
-	before:#copySelection 
-	accelerators:#(Copy Cut Paste).
+        addLabels:#('new entry1' 'new entry2') 
+        selectors:#(foo bar) 
+        before:#copySelection 
+        accelerators:#(Copy Cut Paste).
      v2 middleButtonMenu:m.
 
      v3 := CodeView new open.
      v3 contents:'before again '.
      m := v3 editMenu.
      m
-	addLabels:#('new entry1' 'new entry2') 
-	selectors:#(foo bar) 
-	before:#again.
+        addLabels:#('new entry1' 'new entry2') 
+        selectors:#(foo bar) 
+        before:#again.
      v3 middleButtonMenu:m.
 
      v4 := CodeView new open.
      v4 contents:'at beginning '.
      m := v4 editMenu.
      m
-	addLabels:#('new entry1' 'new entry2' '-') 
-	selectors:#(foo bar nil) 
-	before:1.
+        addLabels:#('new entry1' 'new entry2' '-') 
+        selectors:#(foo bar nil) 
+        before:1.
      v4 middleButtonMenu:m.
 
      v5 := CodeView new open.
      v5 contents:'at end '.
      m := v5 editMenu.
      m
-	addLabels:#('-' 'new entry1' 'new entry2') 
-	selectors:#(nil foo bar).
+        addLabels:#('-' 'new entry1' 'new entry2') 
+        selectors:#(nil foo bar).
      v5 middleButtonMenu:m.
     "
 
@@ -2674,5 +2686,5 @@
 !MenuView class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg/MenuView.st,v 1.111 1997-11-20 18:02:17 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/MenuView.st,v 1.112 1998-01-29 11:59:11 ca Exp $'
 ! !