SDL: Add support for the mouse wheel

Fixes #0001682
liquid_container
Lukas Werling 2016-02-11 22:17:42 +01:00
parent b7766780c5
commit 392b7bab72
1 changed files with 9 additions and 10 deletions

View File

@ -33,7 +33,7 @@ static void sdlToC4MCBtn(const SDL_MouseButtonEvent &e, int32_t& button, DWORD&
{
C4TimeMilliseconds lastLeftClick = C4TimeMilliseconds::Now();
C4TimeMilliseconds lastRightClick = C4TimeMilliseconds::Now();
static int lastX = 0, lastY = 0;
static int32_t lastX, lastY;
static const int clickDist = 2;
static const int clickDelay = 400;
@ -79,14 +79,6 @@ static void sdlToC4MCBtn(const SDL_MouseButtonEvent &e, int32_t& button, DWORD&
else
button = C4MC_Button_MiddleUp;
break;
/*case SDL_BUTTON_WHEELUP:
button = C4MC_Button_Wheel;
flags = (+32) << 16;
break;
case SDL_BUTTON_WHEELDOWN:
button = C4MC_Button_Wheel;
flags = (-32) << 16;
break;*/
}
lastX = e.x;
lastY = e.y;
@ -156,6 +148,7 @@ bool C4AbstractApp::FlushMessages()
void C4AbstractApp::HandleSDLEvent(SDL_Event& e)
{
DWORD flags;
// Directly handle QUIT messages.
switch (e.type)
{
@ -186,10 +179,16 @@ void C4AbstractApp::HandleSDLEvent(SDL_Event& e)
case SDL_MOUSEBUTTONUP:
case SDL_MOUSEBUTTONDOWN:
int32_t button;
DWORD flags;
sdlToC4MCBtn(e.button, button, flags);
C4GUI::MouseMove(button, e.button.x, e.button.y, flags, NULL);
break;
case SDL_MOUSEWHEEL:
flags = e.wheel.y > 0 ? (+32) << 16 : (DWORD) (-32) << 16;
flags += SDL_GetModState();
int x, y;
SDL_GetMouseState(&x, &y);
C4GUI::MouseMove(C4MC_Button_Wheel, x, y, flags, NULL);
break;
case SDL_JOYAXISMOTION:
case SDL_JOYHATMOTION:
case SDL_JOYBALLMOTION: