on windows too: call resize callback only in response to WM message
authorDiederick Niehorster <dcnieho@gmail.com>
Wed, 6 Mar 2013 09:27:18 +0000 (09:27 +0000)
committerDiederick Niehorster <dcnieho@gmail.com>
Wed, 6 Mar 2013 09:27:18 +0000 (09:27 +0000)
(yes, on both platform we now don't have an initial resize callback call, it'll be back later)

git-svn-id: svn+ssh://svn.code.sf.net/p/freeglut/code/trunk/freeglut/freeglut@1559 7f0cb862-5218-0410-a997-914c9d46530a

src/fg_main.c
src/mswin/fg_main_mswin.c

index 9acfc31..2bc8435 100644 (file)
@@ -74,8 +74,6 @@ static void fghReshapeWindow ( SFG_Window *window, int width, int height )
 
        fgPlatformReshapeWindow ( window, width, height );
 
-    INVOKE_WCB( *window, Reshape, ( width, height ) );
-
     /*
      * Force a window redraw.  In Windows at least this is only a partial
      * solution:  if the window is increasing in size in either dimension,
index 70984b2..3cedeb3 100644 (file)
@@ -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 */