How can I reinitialize the event handler

ducasse ducasse at iam.unibe.ch
Sun Apr 7 17:59:05 UTC 2002


Hi ned

I will retry my experience but what I noticed is that when I was adding
handleMouseOver: and mouseEnter mouseLeave if I had previously a morph form
the class it would not react and I had to recreate an instance t=of the
class. There is in this case the event would work.

Stef 

> On Sunday 07 April 2002 04:15 am, ducasse wrote:
> 
>> Now I want to do it for Morphs. This works well except for events.
> 
> Which events?
> 
>> Apparently the event handler is created once at initialization time and
>> after even if we compile new method dealing with event like handles...
>> they are not taken into account.
> 
> The typical handler code (in Morph) for events looks like this:
> 
> mouseDown: evt
> self eventHandler ifNotNil:
> [self eventHandler mouseDown: evt fromMorph: self].
> 
> If you define a new mouseDown: method it will be used.

I know but I have the impression that the eventHandler is created at
initialisation time, then compiling a new method would not take effect for
previously created objects.



> 
>> This is not a problem for normal
>> programming but for my purpose I would like to know if there is a method
>> that I can invoke manually from within an inspector that would reset the
>> event handler. Just to show that I do not have to create another instance
>> to test the new behavior.
> 
> Also, even if you use the event handler, you can do this. For instance, in
> your initialization (or elsewhere) you can say:
> 
> self on: #mouseDown send: #mouseDownEvent:morph: to: self
> 
> and then when the event occurs you will be sent the event and the morph to
> that method.
> 
> You can later redefine #mouseDownEvent:morph: at will and see the new
> behavior.




More information about the Squeak-dev mailing list