Hello

https://code.google.com/p/pharo/issues/detail?id=7310

Hope it can help :)

Ben

On Jan 23, 2013, at 11:55 PM, Stefan Marr wrote:

> 
> On 23 Jan 2013, at 23:06, Stéphane Ducasse wrote:
> 
>> Do you have a case that we can reproduce and so we fix it?
>> One of the problems I fixed yesterday was that the RecentChangeList did not 
>> get notification anymore.
> 
> The following example shows two problems with the current PickListModel:
> 
> | instance |
> 
> instance := PickListModel new.
> instance openWithSpec.
> instance items: {4. 2. 55. 4. 4. }.
> ^ instance
> 
> First, all 4s are the same item, and cannot be selected independently. A bug, 
> I would say.
> Second, the Set does not preserve the order, so `instance pickedItems` does 
> not have the natural order.
> 
> 
> The problem is that PickListModel >> #initialize initializes the field 
> 'pickedItemsHolder' with a Set.
> This set is never exposed and not customizable directly.
> So well, I would say a Set is an unfortunate choice for a list widget.
> Lists have a natural order, and it is not obvious to me why that order should 
> not be preserved.
> 
> I might miss here other tradeoffs of course, but replacing the Set by a 
> OrderedCollection solves my current problem. It does not solve the issue with 
> multiple entries however.
> 
> 
> 
> 
> Best regards
> Stefan
> 
> 
> 
> 
>> 
>> Stef
>> 
>> On Jan 23, 2013, at 6:35 PM, Stefan Marr wrote:
>> 
>>> Hi:
>>> 
>>> On 23 Jan 2013, at 22:06, Stefan Marr wrote:
>>> 
>>>> I get a change browser which tells me that it is going to create a class 
>>>> with stuff.
>>>> But then I get a RBAddMethodChange, which doesn't have a `changeClass`.
>>>> The reason is that the class is not actually created before the method is 
>>>> supposed to be added, I think.
>>> 
>>> So, I am on a recent Pharo 2.0 image and experience problems with the 
>>> ChangesBrowser.
>>> 
>>> Namely, changes are represented as an unordered set, which leads to 
>>> problems.
>>> Most notably, methods are added to non-existing classes before they are 
>>> created.
>>> 
>>> You probably want to use an order-preserving data structure.
>>> 
>>> A quick hack, I used is just a work around:
>>> 
>>> ChangesBrowser >> #accept
>>>     | changes |
>>>     self okToChange ifFalse: [ ^self ].
>>>     
>>>     changes := self pickedChanges sorted: [:a :b | (a isKindOf: 
>>> RBAddClassChange) and: [(b isKindOf: RBAddClassChange) not]].
>>>     
>>>     changes do: [:change | RBRefactoryChangeManager instance performChange: 
>>> change ].
>>>     window delete
>>> 
>>> 
>>> Best regards
>>> Stefan
>>> 
>>> -- 
>>> Stefan Marr
>>> Software Languages Lab
>>> Vrije Universiteit Brussel
>>> Pleinlaan 2 / B-1050 Brussels / Belgium
>>> http://soft.vub.ac.be/~smarr
>>> Phone: +32 2 629 2974
>>> Fax:   +32 2 629 3525
>>> 
>>> 
>> 
>> 
> 
> -- 
> Stefan Marr
> Software Languages Lab
> Vrije Universiteit Brussel
> Pleinlaan 2 / B-1050 Brussels / Belgium
> http://soft.vub.ac.be/~smarr
> Phone: +32 2 629 2974
> Fax:   +32 2 629 3525
> 
> 

Reply via email to