//----------------------------------------------------------------------------- // Mouse motion (with either key pressed) event handler //----------------------------------------------------------------------------- void GlutDisplay::mouseMotionEvent(const int x, const int y) { if (isMessageEnabled(MSG_DEBUG)) { std::cout << "GlutDisplay::mouseEvent(): " << std::endl; } if (picked != nullptr) { Graphic* selected = pick(); if (selected != nullptr) { if (selected != picked) { picked->event(ON_CANCEL); picked->unref(); picked = nullptr; } selected->event(ON_MOTION); } else { if (picked != nullptr) { picked->event(ON_CANCEL); picked->unref(); picked = nullptr; } } } setMouse(x,y); }
//----------------------------------------------------------------------------- // passive button event handler //----------------------------------------------------------------------------- void GlutDisplay::mouseEvent(const int button, const int state, const int x, const int y) { if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN) { Graphic* selected = pick(); if (selected != nullptr) { selected->event(INPUT_LEFT_EDGE); if (picked != nullptr) picked->unref(); picked = selected; picked->ref(); } } if (button == GLUT_LEFT_BUTTON && state == GLUT_UP) { if (picked != nullptr) { picked->event(ON_SINGLE_CLICK); picked->unref(); picked = nullptr; } } setMouse(x,y); }