From d9c977585ba70fd91b0d5bb9a172048f6a0d9a8e Mon Sep 17 00:00:00 2001 From: Patrice Mandin Date: Fri, 9 Jul 2010 17:19:18 +0200 Subject: [PATCH] Use proper GEM API to handle mouse button events --- src/video/gem/SDL_gemevents.c | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/video/gem/SDL_gemevents.c b/src/video/gem/SDL_gemevents.c index 10cfc066b..466302768 100644 --- a/src/video/gem/SDL_gemevents.c +++ b/src/video/gem/SDL_gemevents.c @@ -67,25 +67,27 @@ void GEM_InitOSKeymap(_THIS) void GEM_PumpEvents(_THIS) { - short mousex, mousey, mouseb, dummy; - short kstate, prevkc, prevks; + short prevkc, prevks; + static short maskmouseb=0; int i; SDL_keysym keysym; SDL_memset(gem_currentkeyboard,0,sizeof(gem_currentkeyboard)); prevkc = prevks = 0; - + for (;;) { int quit, resultat, event_mask, mouse_event; short buffer[8], kc; short x2,y2,w2,h2; + short mousex, mousey, mouseb, dummy; + short kstate; quit = mouse_event = x2=y2=w2=h2 = 0; - event_mask = MU_MESAG|MU_TIMER|MU_KEYBD; + event_mask = MU_MESAG|MU_TIMER|MU_KEYBD|MU_BUTTON; if (!GEM_fullscreen && (GEM_handle>=0)) { wind_get (GEM_handle, WF_WORKXYWH, &x2, &y2, &w2, &h2); event_mask |= MU_M1; @@ -95,12 +97,12 @@ void GEM_PumpEvents(_THIS) resultat = evnt_multi( event_mask, - 0,0,0, + 0x101,7,maskmouseb, mouse_event,x2,y2,w2,h2, 0,0,0,0,0, buffer, 10, - &dummy,&dummy,&dummy,&kstate,&kc,&dummy + &mousex,&mousey,&mouseb,&kstate,&kc,&dummy ); /* Message event ? */ @@ -127,15 +129,17 @@ void GEM_PumpEvents(_THIS) GEM_CheckMouseMode(this); } + /* Mouse button event ? */ + if (resultat & MU_BUTTON) { + do_mouse(this, mousex, mousey, mouseb, kstate); + maskmouseb = mouseb & 7; + } + /* Timer event ? */ if ((resultat & MU_TIMER) || quit) break; } - /* Update mouse */ - graf_mkstate(&mousex, &mousey, &mouseb, &kstate); - do_mouse(this, mousex, mousey, mouseb, kstate); - /* Now generate keyboard events */ for (i=0; i