Commit 18a6d284adf2d2aacca902ad683c94389e447b15
1 parent
ada89ce6
enabled wheel mouse support (initial patch by Volker Ruppert)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1229 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
13 additions
and
12 deletions
sdl.c
| ... | ... | @@ -279,9 +279,9 @@ static void sdl_grab_end(void) |
| 279 | 279 | sdl_update_caption(); |
| 280 | 280 | } |
| 281 | 281 | |
| 282 | -static void sdl_send_mouse_event(void) | |
| 282 | +static void sdl_send_mouse_event(int dz) | |
| 283 | 283 | { |
| 284 | - int dx, dy, dz, state, buttons; | |
| 284 | + int dx, dy, state, buttons; | |
| 285 | 285 | state = SDL_GetRelativeMouseState(&dx, &dy); |
| 286 | 286 | buttons = 0; |
| 287 | 287 | if (state & SDL_BUTTON(SDL_BUTTON_LEFT)) |
| ... | ... | @@ -290,14 +290,6 @@ static void sdl_send_mouse_event(void) |
| 290 | 290 | buttons |= MOUSE_EVENT_RBUTTON; |
| 291 | 291 | if (state & SDL_BUTTON(SDL_BUTTON_MIDDLE)) |
| 292 | 292 | buttons |= MOUSE_EVENT_MBUTTON; |
| 293 | - /* XXX: test wheel */ | |
| 294 | - dz = 0; | |
| 295 | -#ifdef SDL_BUTTON_WHEELUP | |
| 296 | - if (state & SDL_BUTTON(SDL_BUTTON_WHEELUP)) | |
| 297 | - dz--; | |
| 298 | - if (state & SDL_BUTTON(SDL_BUTTON_WHEELDOWN)) | |
| 299 | - dz++; | |
| 300 | -#endif | |
| 301 | 293 | kbd_mouse_event(dx, dy, dz, buttons); |
| 302 | 294 | } |
| 303 | 295 | |
| ... | ... | @@ -426,7 +418,7 @@ static void sdl_refresh(DisplayState *ds) |
| 426 | 418 | break; |
| 427 | 419 | case SDL_MOUSEMOTION: |
| 428 | 420 | if (gui_grab) { |
| 429 | - sdl_send_mouse_event(); | |
| 421 | + sdl_send_mouse_event(0); | |
| 430 | 422 | } |
| 431 | 423 | break; |
| 432 | 424 | case SDL_MOUSEBUTTONDOWN: |
| ... | ... | @@ -440,7 +432,16 @@ static void sdl_refresh(DisplayState *ds) |
| 440 | 432 | sdl_grab_start(); |
| 441 | 433 | } |
| 442 | 434 | } else { |
| 443 | - sdl_send_mouse_event(); | |
| 435 | + int dz; | |
| 436 | + dz = 0; | |
| 437 | +#ifdef SDL_BUTTON_WHEELUP | |
| 438 | + if (bev->button == SDL_BUTTON_WHEELUP) { | |
| 439 | + dz = -1; | |
| 440 | + } else if (bev->button == SDL_BUTTON_WHEELDOWN) { | |
| 441 | + dz = 1; | |
| 442 | + } | |
| 443 | +#endif | |
| 444 | + sdl_send_mouse_event(dz); | |
| 444 | 445 | } |
| 445 | 446 | } |
| 446 | 447 | break; | ... | ... |