Win32 glutIconifyWindow() patch contributed by John F. Fay
authorNigel Stewart <nigels.com@gmail.com>
Mon, 5 Jan 2004 15:49:14 +0000 (15:49 +0000)
committerNigel Stewart <nigels.com@gmail.com>
Mon, 5 Jan 2004 15:49:14 +0000 (15:49 +0000)
Restrict resize callbacks to visible windows
When iconified via glutIconifyWindow(), don't pass (0,0) to resize callback
Note that minimising the window via the menu or minimise button is not yet resolved.

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

src/freeglut_main.c
src/freeglut_window.c

index 34e284b..6935ff1 100644 (file)
@@ -1214,11 +1214,16 @@ LRESULT CALLBACK fgWindowProc( HWND hWnd, UINT uMsg, WPARAM wParam,
 
     case WM_SIZE:
         /*
-         * We got resized... But check if the window has been already added...
+         * If the window is visible, then it is the user manually resizing it.
+         * If it is not, then it is the system sending us a dummy resize with
+         * zero dimensions on a "glutIconifyWindow" call.
          */
-        window->State.NeedToResize = GL_TRUE;
-        window->State.Width  = LOWORD(lParam);
-        window->State.Height = HIWORD(lParam);
+        if( window->State.Visible )
+        {
+            window->State.NeedToResize = GL_TRUE;
+            window->State.Width  = LOWORD(lParam);
+            window->State.Height = HIWORD(lParam);
+        }
         break;
 #if 0
     case WM_SETFOCUS: 
index c92fbcb..12e6b52 100644 (file)
@@ -719,6 +719,8 @@ void FGAPIENTRY glutIconifyWindow( void )
     freeglut_assert_ready;
     freeglut_assert_window;
 
+    fgStructure.Window->State.Visible   = GL_FALSE;
+
 #if TARGET_HOST_UNIX_X11
 
     XIconifyWindow( fgDisplay.Display, fgStructure.Window->Window.Handle,