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

Reply via email to