X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Fmswin%2Ffg_main_mswin.c;h=3cedeb3e22e8ed98da0fe4697a236a5dcc70e0cb;hb=0b5007df01a3f60ad5eb690c805153d6fa7760c0;hp=1e14b2a2764971fae6bec124b9f85624eb46aa11;hpb=3d1b35d8992aa26086fa30597e58d171ddf3eeae;p=freeglut diff --git a/src/mswin/fg_main_mswin.c b/src/mswin/fg_main_mswin.c index 1e14b2a..3cedeb3 100644 --- a/src/mswin/fg_main_mswin.c +++ b/src/mswin/fg_main_mswin.c @@ -339,7 +339,7 @@ static LRESULT fghWindowProcKeyPress(SFG_Window *window, UINT uMsg, GLboolean ke return 1; } -static SFG_Window* fghWindowUnderCursor(SFG_Window *window) +SFG_Window* fghWindowUnderCursor(SFG_Window *window) { /* Check if the current window that the mouse is over is a child window * of the window the message was sent to. Some events only sent to main window, @@ -349,7 +349,7 @@ static SFG_Window* fghWindowUnderCursor(SFG_Window *window) */ if (window && window->Children.First) /* This window has childs */ { - SFG_WindowHandleType hwnd; + HWND hwnd; SFG_Window* child_window; /* Get mouse position at time of message */ @@ -506,8 +506,15 @@ LRESULT CALLBACK fgPlatformWindowProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPAR #endif /* defined(_WIN32_WCE) */ if (width!=window->State.Width || height!=window->State.Height) - /* Something changed, need to resize */ - window->State.NeedToResize = GL_TRUE; + { + SFG_Window* saved_window = fgStructure.CurrentWindow; + + /* size changed, call reshape callback */ + INVOKE_WCB( *window, Reshape, ( width, height ) ); + glutPostRedisplay( ); + if( window->IsMenu ) + fgSetWindow( saved_window ); + } } /* according to docs, should return 0 */ @@ -551,8 +558,7 @@ LRESULT CALLBACK fgPlatformWindowProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPAR break; case WM_SETFOCUS: -/* printf("WM_SETFOCUS: %p\n", window ); */ - + /*printf("WM_SETFOCUS: %p\n", window );*/ lRet = DefWindowProc( hWnd, uMsg, wParam, lParam ); SetActiveWindow( window->Window.Handle ); @@ -561,13 +567,11 @@ LRESULT CALLBACK fgPlatformWindowProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPAR break; case WM_KILLFOCUS: - { -/* printf("WM_KILLFOCUS: %p\n", window ); */ - lRet = DefWindowProc( hWnd, uMsg, wParam, lParam ); + /*printf("WM_KILLFOCUS: %p\n", window ); */ + lRet = DefWindowProc( hWnd, uMsg, wParam, lParam ); - /* Check if there are any open menus that need to be closed */ - fgPlatformCheckMenuDeactivate(); - } + /* Check if there are any open menus that need to be closed */ + fgPlatformCheckMenuDeactivate(); break; #if 0