From 8e89a32f5a656f0df21c549707a6bbfc31b201da Mon Sep 17 00:00:00 2001 From: "J?rgen P. Tjern?" Date: Tue, 23 Apr 2013 18:47:32 -0700 Subject: [PATCH] Make sure to send MOUSEMOTION on window enter. This should hopefully fix bug #1612. We now send mousemotion events when the cursor enters the window as well as when it leaves. Thanks to Alex Szpakowski for the fix. Fixes http://bugzilla.libsdl.org/show_bug.cgi?id=1612 --- src/events/SDL_mouse.c | 10 ++++------ src/video/x11/SDL_x11events.c | 4 ++++ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/events/SDL_mouse.c b/src/events/SDL_mouse.c index d8d811bba..67a143902 100644 --- a/src/events/SDL_mouse.c +++ b/src/events/SDL_mouse.c @@ -165,13 +165,11 @@ SDL_UpdateMouseFocus(SDL_Window * window, int x, int y, Uint32 buttonstate) } if (window != mouse->focus) { - mouse->last_x = x; - mouse->last_y = y; - #ifdef DEBUG_MOUSE - printf("Mouse entered window, synthesizing focus gain event\n"); + printf("Mouse entered window, synthesizing focus gain & move event\n"); #endif - SDL_SetMouseFocus(window); + SDL_SetMouseFocus(window); + SDL_PrivateSendMouseMotion(window, mouse->mouseID, 0, x, y); } return SDL_TRUE; } @@ -686,4 +684,4 @@ SDL_ShowCursor(int toggle) return shown; } -/* vi: set ts=4 sw=4 expandtab: */ \ No newline at end of file +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/x11/SDL_x11events.c b/src/video/x11/SDL_x11events.c index dac11bb0f..e26f64ca3 100644 --- a/src/video/x11/SDL_x11events.c +++ b/src/video/x11/SDL_x11events.c @@ -310,6 +310,10 @@ X11_DispatchEvent(_THIS) printf("Mode: NotifyUngrab\n"); #endif SDL_SetMouseFocus(data->window); + + if (!SDL_GetMouse()->relative_mode) { + SDL_SendMouseMotion(data->window, 0, 0, xevent.xcrossing.x, xevent.xcrossing.y); + } } break; /* Losing mouse coverage? */