[Pharo-project] An idea about visual feedback in Athens

Stéphane Ducasse stephane.ducasse at inria.fr
Sun Sep 2 04:12:06 EDT 2012


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





More information about the Pharo-dev mailing list