Commit e2874d34 authored by dscho's avatar dscho

Teach SDLvncviewer about scroll wheel events

Signed-off-by: 's avatarJohannes Schindelin <johannes.schindelin@gmx.de>
parent 76db2202
2009-03-12 Johannes E. Schindelin <Johannes.Schindelin@gmx.de>
* client_examples/SDLvncviewer.c: support mouse wheel operations
2009-03-08 Johannes E. Schindelin <Johannes.Schindelin@gmx.de>
* client_examples/SDLvncviewer.c: support clipboard operations
......
......@@ -6,6 +6,8 @@ struct { int sdl; int rfb; } buttonMapping[]={
{1, rfbButton1Mask},
{2, rfbButton2Mask},
{3, rfbButton3Mask},
{4, rfbButton4Mask},
{5, rfbButton5Mask},
{0,0}
};
......@@ -357,20 +359,37 @@ static void handleSDLEvent(rfbClient *cl, SDL_Event *e)
#endif
case SDL_MOUSEBUTTONUP:
case SDL_MOUSEBUTTONDOWN:
case SDL_MOUSEMOTION: {
case SDL_MOUSEMOTION:
{
int x, y, state, i;
if (viewOnly)
break;
state = SDL_GetMouseState(&x, &y);
if (e->type == SDL_MOUSEMOTION) {
x = e->motion.x;
y = e->motion.y;
state = e->motion.state;
}
else {
x = e->button.x;
y = e->button.y;
state = e->button.button;
for (i = 0; buttonMapping[i].sdl; i++)
if (state == buttonMapping[i].sdl) {
state = buttonMapping[i].rfb;
if (e->type == SDL_MOUSEBUTTONDOWN)
buttonMask |= state;
else
buttonMask &= ~state;
break;
}
}
if (sdlPixels) {
x = x * cl->width / realWidth;
y = y * cl->height / realHeight;
}
for (buttonMask = 0, i = 0; buttonMapping[i].sdl; i++)
if (state & SDL_BUTTON(buttonMapping[i].sdl))
buttonMask |= buttonMapping[i].rfb;
SendPointerEvent(cl, x, y, buttonMask);
buttonMask &= ~(rfbButton4Mask | rfbButton5Mask);
break;
}
case SDL_KEYUP:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment