void MouseToolHandler::onGLCapturedMouseMove(int x, int y, unsigned int mouseState) { sendMoveEventToInactiveTools(x, y); for (ActiveMouseTools::const_iterator i = _activeMouseTools.begin(); i != _activeMouseTools.end();) { ui::MouseToolPtr tool = (i++)->second; switch (processMouseMoveEvent(tool, x, y)) { case ui::MouseTool::Result::Finished: // Tool is done clearActiveMouseTool(tool); handleViewRefresh(tool->getRefreshMode()); break; case ui::MouseTool::Result::Activated: case ui::MouseTool::Result::Continued: handleViewRefresh(tool->getRefreshMode()); break; case ui::MouseTool::Result::Ignored: break; }; } }
void MouseToolHandler::sendMoveEventToInactiveTools(int x, int y) { // Send mouse move events to all tools that want them GlobalMouseToolManager().getGroup(_type).foreachMouseTool([&] (const ui::MouseToolPtr& tool) { if (!tool->alwaysReceivesMoveEvents()) return; // The active tools don't receive this event a second time if (toolIsActive(tool)) return; processMouseMoveEvent(tool, x, y); }); }
void MouseToolHandler::onGLMouseMove(wxMouseEvent& ev) { // Skip this event if any of the active mouse tools is in capture mode // the call here still arrives on OSX even during capture for (const ActiveMouseTools::value_type& pair : _activeMouseTools) { if (pair.second->getPointerMode() & ui::MouseTool::PointerMode::Capture) { return; // skip } } Vector2 position(ev.GetX(), ev.GetY()); sendMoveEventToInactiveTools(ev.GetX(), ev.GetY()); // Pass the move event to all active tools and clear the ones that are done for (ActiveMouseTools::const_iterator i = _activeMouseTools.begin(); i != _activeMouseTools.end();) { ui::MouseToolPtr tool = (i++)->second; // Ask the active mousetool to handle this event switch (processMouseMoveEvent(tool, ev.GetX(), ev.GetY())) { case ui::MouseTool::Result::Finished: // Tool is done clearActiveMouseTool(tool); handleViewRefresh(tool->getRefreshMode()); break; case ui::MouseTool::Result::Activated: case ui::MouseTool::Result::Continued: handleViewRefresh(tool->getRefreshMode()); break; case ui::MouseTool::Result::Ignored: break; }; } }
void InputWrapper::processEvent(SDL_Event *event){ switch(event->type){ case SDL_KEYDOWN: processKeyDownEvent(event); break; case SDL_KEYUP: processKeyUpEvent(event); break; case SDL_MOUSEMOTION: processMouseMoveEvent(event); break; case SDL_MOUSEBUTTONDOWN: processMouseDownEvent(event); break; case SDL_MOUSEBUTTONUP: processMouseUpEvent(event); break; } }