fixed selection after deleting a bunch of changes
authorClaus Gittinger <cg@exept.de>
Wed, 28 Jan 1998 13:33:28 +0100
changeset 1428 180d03d00db4
parent 1427 0b2794583306
child 1429 aa6ce97097dc
fixed selection after deleting a bunch of changes
CBrowser.st
ChangesBrowser.st
--- a/CBrowser.st	Wed Jan 28 13:22:25 1998 +0100
+++ b/CBrowser.st	Wed Jan 28 13:33:28 1998 +0100
@@ -1821,18 +1821,22 @@
 !
 
 silentDeleteChangesFor:aClassName from:start to:stop
-    "delete changes for a given class in a range"
-
-    |thisClassName index|
-
+    "delete changes for a given class in a range.
+     Return the number of deleted changes."
+
+    |thisClassName index numDeleted|
+
+    numDeleted := 0.
     index := stop.
     [index >= start] whileTrue:[
-	thisClassName := self classNameOfChange:index.
-	thisClassName = aClassName ifTrue:[
-	    self silentDeleteChange:index
-	].
-	index := index - 1
-    ]
+        thisClassName := self classNameOfChange:index.
+        thisClassName = aClassName ifTrue:[
+            self silentDeleteChange:index.
+            numDeleted := numDeleted + 1.
+        ].
+        index := index - 1
+    ].
+    ^ numDeleted
 
 !
 
@@ -2247,17 +2251,21 @@
     "delete all changes with same class as currently selected change"
 
     self withSelectedChangeDo:[:changeNr |
-	| classNameToDelete |
-
-	classNameToDelete := self classNameOfChange:changeNr.
-	classNameToDelete notNil ifTrue:[
-	    changeListView setSelection:nil.
-	    self silentDeleteChangesFor:classNameToDelete
-				   from:1
-				     to:(self numberOfChanges).
-	    self setChangeList. 
-	    self autoSelectOrEnd:changeNr
-	]
+        |classNameToDelete numDeletedBefore|
+
+        classNameToDelete := self classNameOfChange:changeNr.
+        classNameToDelete notNil ifTrue:[
+            changeListView setSelection:nil.
+            self silentDeleteChangesFor:classNameToDelete
+                                   from:changeNr
+                                     to:(self numberOfChanges).
+            numDeletedBefore := self 
+                                   silentDeleteChangesFor:classNameToDelete
+                                   from:1
+                                   to:changeNr.
+            self setChangeList. 
+            self autoSelectOrEnd:(changeNr - numDeletedBefore)
+        ]
     ]
 
     "Created: 13.12.1995 / 16:07:14 / cg"
@@ -2270,18 +2278,20 @@
      Useful to get rid of obsolete changes before a fileout or checkin entry."
 
     self withSelectedChangeDo:[:changeNr |
-	| classNameToDelete |
-
-	classNameToDelete := self classNameOfChange:changeNr.
-	classNameToDelete notNil ifTrue:[
-	    changeListView setSelection:nil.
-	    self silentDeleteChangesFor:classNameToDelete 
-				   from:1 
-				     to:changeNr.
-	    self setChangeList.
-	    self autoSelectOrEnd:changeNr
-	]
-    ]
+        |classNameToDelete prevSelection numDeleted|
+
+        classNameToDelete := self classNameOfChange:changeNr.
+        classNameToDelete notNil ifTrue:[
+            prevSelection := changeNr.
+            changeListView setSelection:nil.
+            numDeleted := self 
+                                silentDeleteChangesFor:classNameToDelete 
+                                from:1 
+                                to:changeNr.
+            self setChangeList.
+            self autoSelectOrEnd:(changeNr + 1 - numDeleted)
+        ]
+    ].
 
     "Created: 13.12.1995 / 15:41:58 / cg"
     "Modified: 25.5.1996 / 12:26:34 / cg"
@@ -2659,5 +2669,5 @@
 !ChangesBrowser class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/Attic/CBrowser.st,v 1.123 1998-01-28 12:22:25 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/Attic/CBrowser.st,v 1.124 1998-01-28 12:33:28 cg Exp $'
 ! !
--- a/ChangesBrowser.st	Wed Jan 28 13:22:25 1998 +0100
+++ b/ChangesBrowser.st	Wed Jan 28 13:33:28 1998 +0100
@@ -1821,18 +1821,22 @@
 !
 
 silentDeleteChangesFor:aClassName from:start to:stop
-    "delete changes for a given class in a range"
-
-    |thisClassName index|
-
+    "delete changes for a given class in a range.
+     Return the number of deleted changes."
+
+    |thisClassName index numDeleted|
+
+    numDeleted := 0.
     index := stop.
     [index >= start] whileTrue:[
-	thisClassName := self classNameOfChange:index.
-	thisClassName = aClassName ifTrue:[
-	    self silentDeleteChange:index
-	].
-	index := index - 1
-    ]
+        thisClassName := self classNameOfChange:index.
+        thisClassName = aClassName ifTrue:[
+            self silentDeleteChange:index.
+            numDeleted := numDeleted + 1.
+        ].
+        index := index - 1
+    ].
+    ^ numDeleted
 
 !
 
@@ -2247,17 +2251,21 @@
     "delete all changes with same class as currently selected change"
 
     self withSelectedChangeDo:[:changeNr |
-	| classNameToDelete |
-
-	classNameToDelete := self classNameOfChange:changeNr.
-	classNameToDelete notNil ifTrue:[
-	    changeListView setSelection:nil.
-	    self silentDeleteChangesFor:classNameToDelete
-				   from:1
-				     to:(self numberOfChanges).
-	    self setChangeList. 
-	    self autoSelectOrEnd:changeNr
-	]
+        |classNameToDelete numDeletedBefore|
+
+        classNameToDelete := self classNameOfChange:changeNr.
+        classNameToDelete notNil ifTrue:[
+            changeListView setSelection:nil.
+            self silentDeleteChangesFor:classNameToDelete
+                                   from:changeNr
+                                     to:(self numberOfChanges).
+            numDeletedBefore := self 
+                                   silentDeleteChangesFor:classNameToDelete
+                                   from:1
+                                   to:changeNr.
+            self setChangeList. 
+            self autoSelectOrEnd:(changeNr - numDeletedBefore)
+        ]
     ]
 
     "Created: 13.12.1995 / 16:07:14 / cg"
@@ -2270,18 +2278,20 @@
      Useful to get rid of obsolete changes before a fileout or checkin entry."
 
     self withSelectedChangeDo:[:changeNr |
-	| classNameToDelete |
-
-	classNameToDelete := self classNameOfChange:changeNr.
-	classNameToDelete notNil ifTrue:[
-	    changeListView setSelection:nil.
-	    self silentDeleteChangesFor:classNameToDelete 
-				   from:1 
-				     to:changeNr.
-	    self setChangeList.
-	    self autoSelectOrEnd:changeNr
-	]
-    ]
+        |classNameToDelete prevSelection numDeleted|
+
+        classNameToDelete := self classNameOfChange:changeNr.
+        classNameToDelete notNil ifTrue:[
+            prevSelection := changeNr.
+            changeListView setSelection:nil.
+            numDeleted := self 
+                                silentDeleteChangesFor:classNameToDelete 
+                                from:1 
+                                to:changeNr.
+            self setChangeList.
+            self autoSelectOrEnd:(changeNr + 1 - numDeleted)
+        ]
+    ].
 
     "Created: 13.12.1995 / 15:41:58 / cg"
     "Modified: 25.5.1996 / 12:26:34 / cg"
@@ -2659,5 +2669,5 @@
 !ChangesBrowser class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/ChangesBrowser.st,v 1.123 1998-01-28 12:22:25 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/ChangesBrowser.st,v 1.124 1998-01-28 12:33:28 cg Exp $'
 ! !