diff --git a/dos/pdckbd.c b/dos/pdckbd.c index a5117c21..beb58b0b 100644 --- a/dos/pdckbd.c +++ b/dos/pdckbd.c @@ -211,14 +211,8 @@ static int _process_mouse_events(void) { SP->mouse_status.changes = mouse_scroll & 0x80 ? PDC_MOUSE_WHEEL_UP : PDC_MOUSE_WHEEL_DOWN; - - SP->mouse_status.x = -1; - SP->mouse_status.y = -1; - - return KEY_MOUSE; } - - if (mouse_moved) + else if (mouse_moved) { SP->mouse_status.changes = PDC_MOUSE_MOVED; diff --git a/sdl1/pdckbd.c b/sdl1/pdckbd.c index ad40b6a5..d1f92990 100644 --- a/sdl1/pdckbd.c +++ b/sdl1/pdckbd.c @@ -246,12 +246,13 @@ static int _process_mouse_event(void) BUTTON_PRESSED : BUTTON_RELEASED; Uint8 btn = event.button.button; + SP->mouse_status.x = (event.button.x - pdc_xoffset) / pdc_fwidth; + SP->mouse_status.y = (event.button.y - pdc_yoffset) / pdc_fheight; + /* handle scroll wheel */ if ((btn >= 4 && btn <= 7) && action == BUTTON_RELEASED) { - SP->mouse_status.x = SP->mouse_status.y = -1; - switch (btn) { case 4: @@ -291,9 +292,6 @@ static int _process_mouse_event(void) } } - SP->mouse_status.x = (event.button.x - pdc_xoffset) / pdc_fwidth; - SP->mouse_status.y = (event.button.y - pdc_yoffset) / pdc_fheight; - btn--; SP->mouse_status.button[btn] = action | shift_flags; diff --git a/sdl2/pdckbd.c b/sdl2/pdckbd.c index b069a028..ce510191 100644 --- a/sdl2/pdckbd.c +++ b/sdl2/pdckbd.c @@ -319,13 +319,13 @@ static int _process_mouse_event(void) if (keymods & KMOD_ALT) shift_flags |= BUTTON_ALT; + SP->mouse_status.x = (event.motion.x - pdc_xoffset) / pdc_fwidth; + SP->mouse_status.y = (event.motion.y - pdc_yoffset) / pdc_fheight; + if (event.type == SDL_MOUSEMOTION) { int i; - SP->mouse_status.x = (event.motion.x - pdc_xoffset) / pdc_fwidth; - SP->mouse_status.y = (event.motion.y - pdc_yoffset) / pdc_fheight; - if (!event.motion.state || (SP->mouse_status.x == old_mouse_status.x && SP->mouse_status.y == old_mouse_status.y)) @@ -344,8 +344,6 @@ static int _process_mouse_event(void) } else if (event.type == SDL_MOUSEWHEEL) { - SP->mouse_status.x = SP->mouse_status.y = -1; - if (event.wheel.y > 0) SP->mouse_status.changes = PDC_MOUSE_WHEEL_UP; else if (event.wheel.y < 0) @@ -386,9 +384,6 @@ static int _process_mouse_event(void) } } - SP->mouse_status.x = (event.button.x - pdc_xoffset) / pdc_fwidth; - SP->mouse_status.y = (event.button.y - pdc_yoffset) / pdc_fheight; - btn--; SP->mouse_status.button[btn] = action | shift_flags; diff --git a/x11/pdckbd.c b/x11/pdckbd.c index f35480c1..f8236e5b 100644 --- a/x11/pdckbd.c +++ b/x11/pdckbd.c @@ -350,7 +350,7 @@ static unsigned long _process_mouse_event(XEvent *event) the event. The following code is designed to cater for this situation. */ - SP->mouse_status.changes = 0; + memset(&SP->mouse_status, 0, sizeof(SP->mouse_status)); SP->mouse_status.x = event->xbutton.x / pdc_fwidth; SP->mouse_status.y = event->xbutton.y / pdc_fheight; @@ -368,8 +368,6 @@ static unsigned long _process_mouse_event(XEvent *event) { /* Send the KEY_MOUSE to curses program */ - memset(&SP->mouse_status, 0, sizeof(SP->mouse_status)); - switch(button_no) { case 4: @@ -385,8 +383,6 @@ static unsigned long _process_mouse_event(XEvent *event) SP->mouse_status.changes = PDC_MOUSE_WHEEL_RIGHT; } - SP->mouse_status.x = SP->mouse_status.y = -1; - SP->key_code = TRUE; return KEY_MOUSE; }