diff -r 19c6504a549d src/video/windows/SDL_windowsevents.c --- a/src/video/windows/SDL_windowsevents.c Thu May 12 12:44:39 2016 -0400 +++ b/src/video/windows/SDL_windowsevents.c Fri Aug 05 11:28:07 2016 -0400 @@ -742,16 +742,31 @@ RECT rect; int x, y; int w, h; - - if (data->initializing || data->in_border_change) { + DWORD style, exstyle; + BOOL menu; + LPWINDOWPOS wndpos = (LPWINDOWPOS) lParam; + + if (data->initializing || data->in_border_change || wndpos->flags & (SWP_NOMOVE | SWP_NOSIZE)) { break; } - if (!GetClientRect(hwnd, &rect) || IsRectEmpty(&rect)) { + style = GetWindowLong(hwnd, GWL_STYLE); + exstyle = GetWindowLong(hwnd, GWL_EXSTYLE); + menu = (style & WS_CHILDWINDOW) ? FALSE : (GetMenu(hwnd) != NULL); + + SetRectEmpty(&rect); + if (!AdjustWindowRectEx(&rect, style, menu, exstyle)) { break; } - ClientToScreen(hwnd, (LPPOINT) & rect); - ClientToScreen(hwnd, (LPPOINT) & rect + 1); + + rect.left = wndpos->x - rect.left; + rect.top = wndpos->y - rect.top; + rect.right = wndpos->cx - wndpos->x - rect.right; + rect.bottom = wndpos->cy - wndpos->y - rect.bottom; + + if (IsRectEmpty(&rect)) { + break; + } WIN_UpdateClipCursor(data->window);