[Cuis-dev] Primitive fail when:send:to:withArguments:

Hilaire Fernandes hilaire at drgeo.eu
Wed May 18 08:25:05 PDT 2022


Hi Juan,

Now it does not fail.

But there is a strange behavior, for some object it is not registered 
correctly. In the code below:

visitArrayPreference: aPref
     | list listMorph |
     aPref isTypeAClass ifTrue: [^ self visitArrayClassPreference: aPref].
     listMorph  _ DropDownListMorph
         model: (list _ ListModel with: aPref type)
         listGetter: #list
         indexGetter: #listIndex
         indexSetter: #listIndex: ::
         autoDeselect: false;
         setBalloonText: aPref description.
     list listIndex: (aPref type indexOf: aPref value).
     list when: #listSelectionChanged send: #changedList:for: to: self 
withArguments: {list. aPref}.
     list inspect.
     views at: aPref name capitalized put: listMorph


For the preferernce guiElementsSize, the actionMap of the list looks 
correct:

  an IdentityDictionary(#changed:->#(WeakMessageSend(#update: -> *)
  WeakMessageSend(#update: -> )) 
#listSelectionChanged->WeakMessageSend(#changedList:for: -> a 
PreferenceBrowserVisitor) )


But for other preference (#atMinusDigitMeaning), some part missing in 
the actionMap, the destination of #changeList:for is nil:

an IdentityDictionary(#changed:->#(WeakMessageSend(#update: -> *)
  WeakMessageSend(#update: -> )) 
#listSelectionChanged->WeakMessageSend(#changedList:for: -> nil) )

If I put a halt in the middle if the method, the actionMap is then 
correct. Looks like race condition issues?

I will try to investigate later.

Hilaire

-- 
GNU Dr. Geo
http://drgeo.eu
http://blog.drgeo.eu



More information about the Cuis-dev mailing list