void dispatch(Receiver& rec) const { switch (m_type) { case Type::MouseDown: rec.mouseDown(m_coord, m_button, m_mods); break; case Type::MouseUp: rec.mouseUp(m_coord, m_button, m_mods); break; case Type::MouseMove: rec.mouseMove(m_coord); break; case Type::MouseEnter: rec.mouseEnter(m_coord); break; case Type::MouseLeave: rec.mouseLeave(m_coord); break; case Type::Scroll: rec.scroll(m_coord, m_scroll); break; case Type::TouchDown: rec.touchDown(m_tCoord, m_tid); break; case Type::TouchUp: rec.touchUp(m_tCoord, m_tid); break; case Type::TouchMove: rec.touchMove(m_tCoord, m_tid); break; case Type::CharKeyDown: rec.charKeyDown(m_charcode, m_mods, m_isRepeat); break; case Type::CharKeyUp: rec.charKeyUp(m_charcode, m_mods); break; case Type::SpecialKeyDown: rec.specialKeyDown(m_special, m_mods, m_isRepeat); break; case Type::SpecialKeyUp: rec.specialKeyUp(m_special, m_mods); break; case Type::ModKeyDown: rec.modKeyDown(m_mods, m_isRepeat); break; case Type::ModKeyUp: rec.modKeyUp(m_mods); break; default: break; } }