Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 11 additions & 13 deletions src/NewTools-MethodBrowsers/StMethodBrowser.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -451,13 +451,13 @@ StMethodBrowser >> handleMethodAdded: anAnnouncement [
ifTrue: [ textPresenter text ]
ifFalse: [ nil ].
selectedMethod := self selectedMethod.
(filterPresenter unfilteredItems includes: item) ifFalse: [
self methods: (filterPresenter unfilteredItems copy
add: item asFullRingDefinition;
yourself) ].

(self methods includes: item) ifFalse: [
self methods: (self methods add: item asFullRingDefinition; yourself) ].

self defer: [ self selectIndex: (self methods indexOf: selectedMethod ) ].
self selectedMessage: selectedMethod .

self defer: [ self selectIndex: ((self methods indexOf: selectedMethod) max: 1) ].
self selectedMessage: selectedMethod .
editedText ifNotNil: [
textPresenter text: editedText.
textPresenter markDirty ]
Expand Down Expand Up @@ -487,9 +487,9 @@ StMethodBrowser >> handleMethodModified: anAnnouncement [
ifFalse: [ nil ].

index := methodList selectedIndex.
list := self methods
remove: matchingItem ifAbsent: [ ];
yourself.

list := filterPresenter unfilteredItems copy.
list remove: matchingItem ifAbsent: [ ].
(self shouldRefreshItem: item fromAnnouncement: anAnnouncement) ifFalse: [
self methods: list.
self defer:[ self selectIndex: (index min: self methods size) ].
Expand Down Expand Up @@ -517,8 +517,6 @@ StMethodBrowser >> handleMethodRemoved: anAnnouncement [
matchingItem := self methods
detect: [ :m | m methodClass = item methodClass and: [ m selector = item selector ] ]
ifNone: [ ^ self ].

selection := methodList selectedIndex.
selectedMethod := self selectedMethod.
self methods: (self methods
remove: matchingItem ifAbsent: [ ];
Expand Down Expand Up @@ -676,7 +674,6 @@ StMethodBrowser >> methods: compiledMethods asImplementorsOf: aSymbol [

{ #category : 'api - instance side' }
StMethodBrowser >> methods: compiledMethods asReferenceTo: aClassName [
"Create without opening it a method browsers for the implementors of a Symbol"

self
setRefreshingBlockForClassReferencesOf: aClassName;
Expand Down Expand Up @@ -860,7 +857,7 @@ StMethodBrowser >> setRefreshingBlockForImplementorsOf: aSelector [
self refreshingBlock: [ :message | message selector = aSelector ]
]

{ #category : 'initialization' }
{ #category : 'api' }
StMethodBrowser >> setRefreshingBlockForReferencesToSlot: aSlot [

self refreshingBlock: [ :method | method accessesSlot: aSlot ]
Expand Down Expand Up @@ -985,6 +982,7 @@ StMethodBrowser >> windowTitle [

| msg total |
(filterPresenter isNil or: [ methodList isNil ]) ifTrue: [ ^ title ifNil: [ 'Message Browser' ] ].
self methods ifEmpty: [ ^ 'No Results' ].
total := filterPresenter unfilteredItems size.
msg := methodList ifNil: [ '' ] ifNotNil: [
(filterPresenter filterText isEmpty or: [ methodList numberOfElements = total ])
Expand Down
21 changes: 21 additions & 0 deletions src/NewTools-MethodBrowsers/StMethodBrowserTest.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,27 @@ StMethodBrowserTest >> testHandleMethodAddedAddsMatchingSender [
window ifNotNil: [ window delete ] ]
]

{ #category : 'tests' }
StMethodBrowserTest >> testHandleMethodAddedWithActiveFilterKeepsUnfilteredItems [

| window browser total newMethod |
[
window := StMethodBrowser browseSendersOf: #printOn:.
browser := window presenter.

total := browser filterPresenter unfilteredItems size.
self assert: total > 0.
browser filterPresenter filterInputPresenter text: 'zzznomatch'.
self assert: browser methodList numberOfElements equals: 0.
self class compile: 'tmpSenderMethodForTest ^ self printOn: String new' classified: 'tests-protocol'.
newMethod := self class >> #tmpSenderMethodForTest.
browser handleMethodAdded: (MethodAdded method: newMethod).

self assert: browser filterPresenter unfilteredItems size > total ] ensure: [
self class removeSelector: #tmpSenderMethodForTest.
window ifNotNil: [ window delete ] ]
]

{ #category : 'tests' }
StMethodBrowserTest >> testHandleMethodModifiedRemovesSenderWhenNoLongerMatching [

Expand Down
Loading