From 5704341fa7508cef88f49590500c027a6ab6d91a Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Wed, 19 Jan 2011 16:02:15 -0800 Subject: [PATCH] Window move events have the same problem as size events on Windows --- src/events/SDL_windowevents.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/events/SDL_windowevents.c b/src/events/SDL_windowevents.c index 2a7a7c7db..ff92e82dd 100644 --- a/src/events/SDL_windowevents.c +++ b/src/events/SDL_windowevents.c @@ -43,6 +43,20 @@ RemovePendingSizeEvents(void * userdata, SDL_Event *event) return 1; } +static int +RemovePendingMoveEvents(void * userdata, SDL_Event *event) +{ + SDL_Event *new_event = (SDL_Event *)userdata; + + if (event->type == SDL_WINDOWEVENT && + event->window.event == SDL_WINDOWEVENT_MOVED && + event->window.windowID == new_event->window.windowID) { + /* We're about to post a new move event, drop the old one */ + return 0; + } + return 1; +} + int SDL_SendWindowEvent(SDL_Window * window, Uint8 windowevent, int data1, int data2) @@ -156,6 +170,9 @@ SDL_SendWindowEvent(SDL_Window * window, Uint8 windowevent, int data1, if (windowevent == SDL_WINDOWEVENT_RESIZED) { SDL_FilterEvents(RemovePendingSizeEvents, &event); } + if (windowevent == SDL_WINDOWEVENT_MOVED) { + SDL_FilterEvents(RemovePendingMoveEvents, &event); + } posted = (SDL_PushEvent(&event) > 0); }