event* handler::dispatch( event* e ) {
_event = e;
int res = this->operator()();
return (res != OK) ? _event : 0;
}
int handler::operator()() {
event& e = * _event; fetch event
if ( e.type() == ButtonPress ) press(e);
else if ( e.type() == ButtonRelease ) release(e);
else if ( e.type() == KeyPress ) keypress(e);
else if ( e.type() == KeyRelease ) keyrelease(e);
else if ( e.type() == MotionNotify ) motion(e);
else if ( e.type() == EnterNotify ) enter(e);
else if ( e.type() == LeaveNotify ) leave(e);
else other(e);
return OK;
}
slide: Dispatching events