https://pharo.fogbugz.com/f/cases/10162/multiple-selection-of-methods-in-method-pane-if-CompiledMethods-are-equal

Norbert

Am 28.03.2013 um 13:02 schrieb Camillo Bruni <[email protected]>:

> please! :) that would save some major pain here and there ;)
> 
> On 2013-03-28, at 12:57, Benjamin <[email protected]> 
> wrote:
> 
>> if it works go ahead ;)
>> 
>> Ben
>> 
>> On Mar 28, 2013, at 12:48 PM, Norbert Hartl <[email protected]> wrote:
>> 
>>> 
>>> Am 28.03.2013 um 11:51 schrieb stephane ducasse <[email protected]>:
>>> 
>>>> 
>>>> On Mar 28, 2013, at 11:21 AM, Norbert Hartl <[email protected]> wrote:
>>>> 
>>>>> What is the rationale for having the method pane as multi-select list? I 
>>>>> don't think it is of greater use when editing code. I could imagine that 
>>>>> some refactoring tasks could be easier having multi-select lists.
>>>>> 
>>>>> Anyway, if I try to rename a method without using the refactoring engine 
>>>>> I just change the selector, save and delete the method with the old 
>>>>> selector. In pharo 2.0 when you rename a method and then click on the old 
>>>>> selector both methods are selected and shortcut invocation for deleting 
>>>>> deletes both. Which is quite annoying. In my opinion there is no reason 
>>>>> for two methods being selected. If you agree I'll happily enter a bug.
>>>> 
>>>> 
>>>> The problem is not a nautilus bug but a compiled method one if I remember 
>>>> correctly.
>>>> because two methods with the same body are equal.
>>>> 
>>> It happens in MethodWidget>>#methodSelectionAt:put. When 
>>> PluggableIconListMorph updates the list selection it calls the MethodWidget 
>>> to set true on the new method selected. But MethodWidget uses a Dictionary 
>>> for instVar methodSelection and finds the old method being equal and 
>>> enables this.
>>> As I don't see a reason why a selection should be done by equality this 
>>> behavior can be fixed by using an IdentityDictionary.
>>> 
>>> Fix:
>>> 
>>> MethodWidget>>#initialize
>>> 
>>>     super initialize.
>>>     methodsSelection := IdentityDictionary new.
>>> 
>>> Any arguments?
>>> 
>>> Norbert
>> 
> 
> 

Reply via email to