#FEATURE by cg
authorClaus Gittinger <cg@exept.de>
Wed, 20 Jun 2018 15:37:46 +0200
changeset 18232 56fa2d552804
parent 18231 770f94b6fab7
child 18233 a070f4876720
#FEATURE by cg class: ChangesBrowser changed: #doDeleteClassSelectorOlder deleting older category changes
ChangesBrowser.st
--- a/ChangesBrowser.st	Wed Jun 20 12:44:26 2018 +0200
+++ b/ChangesBrowser.st	Wed Jun 20 15:37:46 2018 +0200
@@ -2584,24 +2584,30 @@
 doDeleteClassSelectorOlder
     "delete this and older changes with same class and selector as currently selected change(s)"
 
-    |classNameSelectorPairsToDelete upToPerClassAndSelector lastChangeNr overAllNumDeletedBefore|
+    |classNameSelectorTypeTuplesToDelete 
+     lastChangeNr overAllNumDeletedBefore|
 
     lastChangeNr := -1.
-    classNameSelectorPairsToDelete := Set new.
-    upToPerClassAndSelector := Dictionary new.
+    classNameSelectorTypeTuplesToDelete := OrderedCollection new.
     
     "/ collect info on what is to be deleted
-    self withSelectedChangesDo:[:changeNr |
-        |className selector|
-
+    self withSelectedChangesInOrder:#reverse do:[:changeNr |
+        |className selector changeType|
+
+        changeType := #methodChange.
         className := self realClassNameOfChange:changeNr.
         selector := self selectorOfMethodChange:changeNr.
-        selector notNil ifTrue:[
-            (className notNil and:[selector notNil]) ifTrue:[
-                classNameSelectorPairsToDelete add:(className -> selector).
-                upToPerClassAndSelector at:(className -> selector) put:changeNr.
+        selector isNil ifTrue:[
+            (changeInfoList at:changeNr) isMethodCategoryChange ifTrue:[
+                selector := self selectorOfMethodCategoryChange:changeNr.
+                selector notNil ifTrue:[
+                    changeType := #methodCategoryChange.
+                ]
             ]
         ].
+        (className notNil and:[selector notNil]) ifTrue:[
+            classNameSelectorTypeTuplesToDelete add:{ className . selector . changeType . changeNr}.
+        ].    
         lastChangeNr := lastChangeNr max:changeNr.
     ].
         
@@ -2609,17 +2615,23 @@
     self unselect.
 
     self withExecuteCursorDo:[
-        classNameSelectorPairsToDelete do:[:pair |
-            |numDeletedBefore className selector lastToDelete|
-
-            className := pair key.
-            selector  := pair value.
-            lastToDelete := (upToPerClassAndSelector at:pair).
-            
-            numDeletedBefore := self
-                                   silentDeleteChangesFor:className selector:selector
-                                   from:1
-                                   to:lastToDelete.
+        classNameSelectorTypeTuplesToDelete do:[:tuple |
+            |numDeletedBefore className selector changeType lastToDelete|
+
+            className := tuple at:1.
+            selector  := tuple at:2.
+            changeType  := tuple at:3.
+            lastToDelete := (tuple at:4) - overAllNumDeletedBefore.
+
+            changeType == #methodCategoryChange ifTrue:[
+                numDeletedBefore := self
+                                       silentDeleteMethodCategoryChangesFor:className selector:selector
+                                       from:1 to:lastToDelete.
+            ] ifFalse:[    
+                numDeletedBefore := self
+                                       silentDeleteChangesFor:className selector:selector
+                                       from:1 to:lastToDelete.
+            ].
             lastChangeNr := lastChangeNr - numDeletedBefore.
             overAllNumDeletedBefore := overAllNumDeletedBefore + numDeletedBefore.
         ].
@@ -2629,6 +2641,7 @@
     self autoSelectOrEnd:lastChangeNr
 
     "Modified: / 25-07-2017 / 10:57:31 / cg"
+    "Modified: / 20-06-2018 / 15:33:40 / Claus Gittinger"
 !
 
 doDeleteFromBeginning