--- Begin Message ---
thanks Jhoan for the explanation!
Do you know some technique to intercept this kind bug? (...or to avoid
them?)
thanks
Matteo
On 08/09/16 01:11, Johan Fabry wrote:
> Excellent, you found a bug in my code!
>
> What happens is that when one item is selected in a list, in the other list
> the currently selected item is de-selected. This causes *both* blocks
> (whenAPIChanged: and whenEventChanged:) to be executed, and depending on what
> order they are executed the behavior is different. (A classical concurrent
> programming problem.) This order apparently changes depending on how many
> windows you have open, et cetera, I guess because of how the announcement
> system is implemented.
>
> So, yes the easiest solution is to remove both ifNil: […] lines. The UI will
> not work as cleanly, but it is a quick fix. Alternatively, and a bit more
> complicated, is to check if the selection in the other list is also empty
> before setting the text to the empty string.
>
> For the sake of the example, I will simply remove both ifNil: […] lines from
> the documentation.
>
> Thanks for reporting this, and if you have further issues do not hesitate to
> tell us!
>
> --
> Does this mail seem too brief? Sorry for that, I don’t mean to be rude!
> Please see http://emailcharter.org .
>
> Johan Fabry - http://pleiad.cl/~jfabry
> PLEIAD and RyCh labs - Computer Science Department (DCC) - University of
> Chile
>
>> On Sep 7, 2016, at 19:51, Matteo <matte...@yahoo.it> wrote:
>>
>> Hello Johan,
>> I've coded all the examples manually, changing the names to avoid
>> any conflict with the ProtocolBrowser "bundled" in the Pharo 5 image
>> (i.e. instead of "ProtocolBrowser" I've named my class as "ProtcolFlipper").
>> But the result is the same.
>>
>> Things improve if all the "ifNil: [ text text: '' ]" get removed from
>> the ProtcolFlipper>>initializePresenter method.
>> Obviously the text pane is no more "cleaned" when deselecting an "api"
>> or "api-event" row.
>>
>> I've tried to substitute the "ifNil: [ text text: '' ]" with "ifNil: [
>> text text: 'api' ] and ifNil: [ text text: 'api-events' ] , respectively
>> on the "api" and "event" instances, in the ProtocolBrowser >>
>> initializePresenter method.
>> In this way I found that "ifNil:" message is sent improperly, i.e. when
>> a "api-event" row is selected then the message "ifNil:" of the "api"
>> instance is triggered, and vice-versa.
>> In some way this is correct: when a "api-event" row is selected then
>> none of the "api" rows are selected...
>>
>> However I'm puzzled by the fact that the behavior seems random: creating
>> 3 instances I can get 3 different behaviors.
>>
>> have you never experienced this?
>>
>> Maybe I'll check again my code...
>>
>> thanks,
>> Matteo
>
--- End Message ---