#FEATURE by cg
class: ChangesBrowser
changed: #doDeleteClassSelectorOlder
deleting older category changes
--- 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