void Dragger::dispatch(MotionCommand& command) { // apply any constraints for(Constraints::iterator itr = _constraints.begin(); itr != _constraints.end(); ++itr) { command.accept(*(*itr)); } // apply any constraints of parent dragger. if (getParentDragger()!=this) { for(Constraints::iterator itr = getParentDragger()->getConstraints().begin(); itr != getParentDragger()->getConstraints().end(); ++itr) { command.accept(*(*itr)); } } // move self getParentDragger()->receive(command); // pass on movement to any dragger callbacks for(DraggerCallbacks::iterator itr = getParentDragger()->getDraggerCallbacks().begin(); itr != getParentDragger()->getDraggerCallbacks().end(); ++itr) { command.accept(*(*itr)); } }