[Newbies] EventHandler "value parameters are passed as first of 3 arguments" ?

Marcel Taeumel marcel.taeumel at hpi.de
Fri Jan 12 09:35:43 UTC 2018

Hi, there.

Sorry for my apparently confusing explanation. :-)

Please find a attached a change set to file-in via drag-drop into your image. It contains the class MyTextMorph. Then you can try out the following code in your workspace:

| container fieldOne fieldTwo |

container := Morph new.
fieldOne := MyTextMorph new.
fieldTwo := MyTextMorph new.

color: Color white;
extent: 400 at 100;
layoutPolicy: TableLayout new;
layoutInset: 2;
listDirection: #leftToRight.

hResizing: #spaceFill;
vResizing: #spaceFill.

hResizing: #spaceFill;
vResizing: #spaceFill.

fieldOne contents: 'Hello World!'.
fieldTwo contents: '?????'.

addMorphBack: fieldOne;
addMorphBack: fieldTwo.

fieldOne addDependent: fieldTwo.

container openInWorld.


Note that TextMorph has actually NO support for #on:send:to: at the moment bc. it overrides various methods that ignore EventHandler. You have to implement #handlesMouseOver:, #mouseLeave, and #update:with:. See the attached changeset.

Am 12.01.2018 02:57:57 schrieb John-Reed Maffeo <jrmaffeo at gmail.com>:
_______________________________________________ Beginners mailing list Beginners at lists.squeakfoundation.org http://lists.squeakfoundation.org/mailman/listinfo/beginners

Thanks for your reply.

I don't know why it is so difficult for me to grock (does anyone say that anymore?) this stuff, however your answer does not clarify my understanding:-( I will attempt to use #on:send:to::in my solution, however, I would appreciate a Workspace example of #on:send:to:withValue to satisfy my curiosity. I will write something in the wiki for future reference once I understand it :-)


On Thu, Jan 11, 2018 at 6:33 AM, Marcel Taeumel <marcel.taeumel at hpi.de [mailto:marcel.taeumel at hpi.de]> wrote:

Hi, there. :)

Well, #on:send:to: works best if the target's source code is under your control. In your example, you would implement something like #setContentsEvent:from: in MyTextMorph. There, you have access to the mouse event and to the source morph to access the contents.

I would like to explain two other things, too:
1) You only need to call #addDependent: in the source if you want to implement or use #update: in the target. That's not the case in your example. You do not need it here.
2) The way #on:send:to:withValue: works is, in my opinion, broken. It only supports you to configure a single, hard-coded value, to be passed as first argument in a three-arg-selector. This is useless if you think about having multiple callbacks configured via #on:send:to:withValue:. We should fix that in the future.

Am 11.01.2018 03:33:27 schrieb John-Reed Maffeo <jrmaffeo at gmail.com [mailto:jrmaffeo at gmail.com]>:
_______________________________________________ Beginners mailing list Beginners at lists.squeakfoundation.org [mailto:Beginners at lists.squeakfoundation.org] http://lists.squeakfoundation.org/mailman/listinfo/beginners [http://lists.squeakfoundation.org/mailman/listinfo/beginners]
#EventHandler halts with this warning from the method #on:send:to:withValue:

How does this work? I can't find an example.

I am trying to learn how to use TextMorph in an application. My simple test case is a morph containing two TextMorphs. I want the second morph to contain the contents of the first morph when that morph loses focus.

start -------------------
|borMor tMor1 tMor2 |

borMor := BorderedMorph new.
borMor color: Color white.
borMor width: 44.
tMor1 := TextMorph new.
tMor1 contents: 'Hello World!'.
tMor2 := TextMorph new.
tMor2 contents: '?????'.
tMor1 addDependent: tMor2.

borMor  layoutPolicy: TableLayout new;
listDirection: #leftToRight;
wrapCentering: #topLeft;
hResizing: #spaceFill;
vResizing: #spaceFill;
layoutInset: 2;
rubberBandCells: true.

borMor addMorph: tMor1. 
tMor1 addDependent: tMor2.
borMor addMorph: tMor2.
tMor1 on: #mouseLeave send: #contents: to: tMore2 withValue: #(tMor1 contents nil).

borMor openInWorld.

end -----------------

This may not be the best way to approach the problem, but I would like to know how to use the method in any case.



Beginners mailing list
Beginners at lists.squeakfoundation.org [mailto:Beginners at lists.squeakfoundation.org]
http://lists.squeakfoundation.org/mailman/listinfo/beginners [http://lists.squeakfoundation.org/mailman/listinfo/beginners]

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/beginners/attachments/20180112/bbe53aac/attachment-0001.html>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: on-send-to-example.1.cs
URL: <http://lists.squeakfoundation.org/pipermail/beginners/attachments/20180112/bbe53aac/attachment-0001.ksh>

More information about the Beginners mailing list