void Window::handleMouseDown(SDL_Event event) { static const Uint32 DOUBLECLICKTIME = 500; static const int DOUBLECLICKDELTA = 5; MouseButton button = Input::getMouseButton(event.button.button); // windows implementation uses 120 for the resolution of a standard mouse // wheel notch. However, newer mice have finer resolutions. I dunno if SDL // handles those, but for now we're going to say that each mouse wheel // movement is 120. if(button == MouseButton::WHEEL_UP) { eventMouseWheel(event.button.x, event.button.y, 120); return; } else if(button == MouseButton::WHEEL_DOWN) { eventMouseWheel(event.button.x, event.button.y, -120); return; } input.setMouseState(button, true); if(input.getLastMouseEvent() - lastMouseDown[button] < DOUBLECLICKTIME && abs(lastMouse[button].x - event.button.x) < DOUBLECLICKDELTA && abs(lastMouse[button].y - event.button.y) < DOUBLECLICKDELTA) { eventMouseDoubleClick(event.button.x, event.button.y, button); } else { eventMouseDown(event.button.x, event.button.y, button); } lastMouseDown[button] = input.getLastMouseEvent(); lastMouse[button] = input.getMousePos(); }
void Window::notifyMouseWheel(MyGUI::Widget* _sender, int _rel) { onMouseWheel(_rel); eventMouseWheel(_sender, _rel); }
void WidgetInput::_riseMouseWheel(int _rel) { onMouseWheel(_rel); eventMouseWheel(static_cast<Widget*>(this), _rel); }