UIPainterView.st
changeset 887 79a6e12e1d0f
parent 886 3c67610b9631
child 925 e6ddd46581c3
--- a/UIPainterView.st	Wed Jul 08 22:18:47 1998 +0200
+++ b/UIPainterView.st	Wed Jul 08 22:58:41 1998 +0200
@@ -197,64 +197,57 @@
 !
 
 deleteSelection
+    "delete the selection buffered
+    "
+    self deleteSelectionBuffered: true
+!
+
+deleteSelectionBuffered: buffered
     "cut the selection into the cut&paste-buffer
      and open a transaction
     "
-    |specs coll oldSelectedNode newSelectedNode|
+    |specs coll oldSelectedNode newSelectedNode newSelection|
 
     coll := self minSetOfSuperViews:(self selection).
 
     coll notNil ifTrue:[
         treeView cvsEventsDisabledDo:[
 
-            oldSelectedNode := treeView selectedNode. 
-            oldSelectedNode parent children size <= 1 ifTrue: [
-                newSelectedNode := oldSelectedNode parent
-            ]
-            ifFalse: [
-                newSelectedNode := oldSelectedNode parent children 
-                    at: (oldSelectedNode parent indexOfChild: oldSelectedNode) - 1 
-                    ifAbsent: [oldSelectedNode parent children at: 2]
+            (oldSelectedNode := (treeView model selectedNodes at: 1 ifAbsent: nil)) notNil ifTrue: [
+                oldSelectedNode parent children size <= 1 ifTrue: [
+                    newSelectedNode := oldSelectedNode parent
+                ]
+                ifFalse: [
+                    newSelectedNode := oldSelectedNode parent children 
+                        at: (oldSelectedNode parent indexOfChild: oldSelectedNode) - 1 
+                        ifAbsent: [oldSelectedNode parent children at: 2]
+                ].
             ].
-
-            selection := nil.  
+            self hideSelection.
+            selection := nil.
             specs := coll collect:[:aView| self fullSpecFor:aView ].
 
             self withinTransaction:#cut objects:coll do:[
                 coll reverseDo:[:aView|
                     self createUndoRemove:aView.
-                    self remove:aView
+                    self remove:aView.
                 ]
             ].
+            buffered ifTrue: [self setSelection: specs].
             treeView selection: nil. 
-            treeView selection: (treeView model indexOf:newSelectedNode).
+            (newSelection := (treeView model indexOf:newSelectedNode)) > 0 ifFalse: [
+                 newSelection := 1
+            ].
+            treeView selection: (Array with: newSelection).
             self setSelection:treeView selectedNode contents view withRedraw: true.
-
         ]
     ]
 !
 
 deleteTotalSelection
-    "delete the selection; copy the selection into the cut&paste-buffer
-     and open a transaction
-    "
-    |specs coll|
-
-    coll := self minSetOfSuperViews:(self selection).
-
-    coll notNil ifTrue:[
-        treeView cvsEventsDisabledDo:[
-            self select:nil.
-            specs := coll collect:[:aView| self fullSpecFor:aView ].
-
-            self withinTransaction:#cut objects:coll do:[
-                coll reverseDo:[:aView|
-                    self remove:aView
-                ]
-            ].
-            treeView selection: (Array with: 1)
-        ]
-    ]
+    "delete the selection
+    "            
+    self deleteSelectionBuffered: false
 !
 
 pasteBuffer