--- a/UIPainter.st Wed May 13 14:59:09 2009 +0200
+++ b/UIPainter.st Wed May 13 18:40:04 2009 +0200
@@ -6489,15 +6489,16 @@
doStepIn
"move the currently selected widget into the next available container below"
-
+
|item oldParentItem newParentItem idx|
item := self selectedNode.
(item notNil and:[(oldParentItem := item parent) notNil]) ifTrue:[
idx := (oldParentItem indexOfChild:item) + 1.
- newParentItem := oldParentItem children detect:[:eachChild|
- eachChild contents spec class supportsSubComponents
- ] startingAt:idx ifNone:nil.
+ newParentItem := oldParentItem children
+ detect:[:eachChild | eachChild contents spec class supportsSubComponents]
+ startingAt:idx
+ ifNone:nil.
newParentItem notNil ifTrue:[
self doChangeParentOfSelectedItemTo:newParentItem
].
@@ -6516,17 +6517,18 @@
doStepOver:anIndex
"moves child 'anIndex' forward or backward in list of children"
- |item idx size prnt spVw view canvas|
+ |item idx size parentItem parentItemsView itemsView canvas|
self askForSelectionChangeAllowed ifFalse:[^ self].
( (item := self selectedNode) isNil
- or:[(prnt := item parent) isNil
- or:[(size := prnt children size) < 2
- or:[(idx := prnt indexOfChild:item) == 0]]]
+ or:[(parentItem := item parent) isNil
+ or:[(size := parentItem children size) < 2
+ or:[(idx := parentItem indexOfChild:item) == 0]]]
) ifTrue:[
^ self
].
+
idx := idx + anIndex.
idx < 1 ifTrue:[idx := size]
@@ -6534,20 +6536,28 @@
self setSelection:nil.
model remove:item.
- model add:item beforeIndex:idx below:prnt.
-
- idx := prnt indexOfChild:item.
- view := item contents view.
- spVw := prnt contents view.
+ model add:item beforeIndex:idx below:parentItem.
+
+ idx := parentItem indexOfChild:item.
+ itemsView := item contents view.
+ parentItemsView := parentItem contents view.
+
canvas := self canvas.
-
canvas hideSelection.
- spVw changeSequenceOrderFor:view to:idx.
-
- spVw specClass isLayoutContainer ifFalse:[
+ itemsView isView ifFalse:[
+ "/ a component - has its own collection (and therefore indexing) - sigh
+ idx := idx - ((1 to:idx-1) count:[:i | (parentItem children at:i) contents view isView]).
+ parentItemsView changeSequenceOrderFor:itemsView to:idx.
+ ] ifTrue:[
+ "/ a view - has its own collection (and therefore indexing) - sigh
+ idx := idx - ((1 to:idx-1) count:[:i | (parentItem children at:i) contents view isView not]).
+ parentItemsView changeSequenceOrderFor:itemsView to:idx.
+ ].
+
+ parentItemsView specClass isLayoutContainer ifFalse:[
"/ spVw components notEmptyOrNil ifTrue:[ self halt ].
- spVw subViews do:[:v| v raise ].
+ parentItemsView subViews do:[:v| v raise ].
].
canvas showSelection.
self selectNode:item.