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 >> > >
