Mantis - Squeak Packages
Viewing Issue Advanced Details
6931 OmniBrowser minor always 02-17-08 11:42 04-09-11 20:07
Nicolai Hess  
0006931: Choose dialog for "List of senders" ignores selected entry.
Selecting implementors or senders button let you choose for which message
you want to see them. This does work for implementors
but not for senders. It always search for senders of the current
message and ignores what you selected from the choose-dialog.
Maybe OBSendersBrowser have to use

    ^self sendersNav: #sendersOfMessage

to create defaultMetaNode instead of

    ^self sendersNav: #senders

But I am not sure if it breaks code elsewhere.
Some tasks in Omnibrowser are delegated so many level deep
from caller to executor, that it is difficult to follow
an execution path.

 ListOfSenders.1.cs [^] (717 bytes) 02-24-08 11:18

02-24-08 11:24   
Using #sendersOfMessage instead of #senders sort of works, but it breaks the "chasing browsers" behavior in a "Senders of" browser.

ListOfSenders.1.cs is a simple fix for this bug.

The problem is in OBCmdBrowseList>>execute. The OBMessageNode instance that is used to determine the initial list of methods for the browser is set so that its "selector" ivar refers to the method you are currently browsing, and its "message" ivar refers to the method you select from OBChoiceRequest popup.

So the value of "selector" is only coincidentally relevant to the methods whose senders/implementors you'd like to see. But the value of "message" is always what you want, since you picked it yourself (or, since it's already the same as "selector").

And since sometimes the initial list of methods will be generated using "selector" (see OBMethodMode>>senders) and sometimes using "message" (see OBMessageNode>>implementors), the most straightforward solution is to tweak the OBMessageNode instance so that "selector" has the same value as "message". This instance doesn't get used for anything else later on, so there are no ill effects.
Damien Cassou   
02-25-08 07:49   
Please commit the fix directly to the repository [^] You don't need any login/password. Before, please verify what you are going to commit by using the Changes button.
02-25-08 08:56   

OK--I committed the changes to OB-Standard-alog.327.