Yes we should really refactor this hierarchy.
We should finish first the event model cleaning at VM/Image border then we work 
on this one.

On Aug 31, 2012, at 9:21 PM, Igor Stasenko wrote:

> and to give an idea, how current Morphic doing that, a starting point is
> MorphicEventDispatcher
> 
> personally, i find this code too complex to understand, given heavy
> use of case statements and branches.
> 
> But i figured out, that this method:
> 
> 
> dispatchEvent: anEvent with: aMorph
>       "Dispatch the given event for a morph that has chosen the receiver to
> dispatch its events. The method implements a shortcut for repeated
> dispatches of events using the same dispatcher."
>       anEvent type == lastType ifTrue:[^self perform: lastDispatch with:
> anEvent with: aMorph].
>       "Otherwise classify"
>       lastType := anEvent type.
>       anEvent isMouse ifTrue:[
>               anEvent isMouseDown ifTrue:[
>                       lastDispatch := #dispatchMouseDown:with:.
>                       ^self dispatchMouseDown: anEvent with: aMorph]].
>       anEvent type == #dropEvent ifTrue:[
>               lastDispatch := #dispatchDropEvent:with:.
>               ^self dispatchDropEvent: anEvent with: aMorph].
>       anEvent isWindowEvent ifTrue:[
>               lastDispatch := #dispatchWindowEvent:with:.
>               ^self dispatchWindowEvent: anEvent with: aMorph].       
>       lastDispatch := #dispatchDefault:with:.
>       ^self dispatchDefault: anEvent with: aMorph
> 
> ---
> 
> actually can be replaced by one-liner:
> 
> dispatchEvent: anEvent with: aMorph
>    morph := aMorph.
>   ^ anEvent sentTo: self
> 
> .. yeah.. my favorite thing:  double-dispatch.
> 
> -- 
> Best regards,
> Igor Stasenko.
> 


Reply via email to