X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Fmswin%2Ffg_main_mswin.c;h=3ecde1f59c34bd392d23918cd6874c8597abbea6;hb=904f551774d232dbad1d657a305449ec359c9f57;hp=59b2530b0eee083d1b1b7aea4c1d1d15b54ee909;hpb=6432eb1d0f272a7d4ea7a9f2895699d7ab77d1a3;p=freeglut diff --git a/src/mswin/fg_main_mswin.c b/src/mswin/fg_main_mswin.c index 59b2530..3ecde1f 100644 --- a/src/mswin/fg_main_mswin.c +++ b/src/mswin/fg_main_mswin.c @@ -427,6 +427,29 @@ LRESULT CALLBACK fgPlatformWindowProc( HWND hWnd, UINT uMsg, WPARAM wParam, break; + case WM_MOVE: + { + SFG_Window* saved_window = fgStructure.CurrentWindow; + RECT windowRect; + GetWindowRect( window->Window.Handle, &windowRect ); + + if (window->Parent) + { + /* For child window, we should return relative to upper-left + * of parent's client area. + */ + POINT topleft = {windowRect.left,windowRect.top}; + + ScreenToClient(window->Parent->Window.Handle,&topleft); + windowRect.left = topleft.x; + windowRect.top = topleft.y; + } + + INVOKE_WCB( *window, Position, ( windowRect.left, windowRect.top ) ); + fgSetWindow(saved_window); + } + break; + case WM_SETFOCUS: /* printf("WM_SETFOCUS: %p\n", window ); */