Cleaned up the comments a bit in the callbacks.c file (mostly removed some
[freeglut] / src / freeglut_main.c
index c6eaa64..c28658f 100644 (file)
@@ -568,12 +568,6 @@ void FGAPIENTRY glutMainLoopEvent( void )
      */
     switch( event.type )
     {
-    case CreateNotify:
-      /*
-       * The window creation confirmation
-       */
-      break;
-
     case DestroyNotify:
       /*
        * This is sent to confirm the XDestroyWindow call.
@@ -619,6 +613,19 @@ void FGAPIENTRY glutMainLoopEvent( void )
           fghRedrawWindowByHandle( event.xexpose.window );
       break;
 
+      /*
+       * CreateNotify causes a configure-event so that sub-windows are
+       * handled compatibly with GLUT.
+       *
+       * NOTE that it is possible that you will more than one Reshape
+       * event for your top-level window, but something like this appears
+       * to be required for compatbility.
+       *
+       * GLUT presumably does this because it generally tries to treat
+       * sub-windows the same as windows.
+       *
+       */
+    case CreateNotify:
     case ConfigureNotify:
       /*
        * The window gets resized
@@ -865,7 +872,7 @@ void FGAPIENTRY glutMainLoopEvent( void )
             SFG_Window *save_window = fgStructure.Window ;
             SFG_Menu *save_menu = fgStructure.Menu ;
             SFG_Window *parent_window = window->ActiveMenu->ParentWindow ;
-            fgSetWindow ( window ) ;
+            fgSetWindow ( parent_window ) ;
             fgStructure.Menu = window->ActiveMenu ;
 
             /* Execute the menu callback */
@@ -1643,7 +1650,7 @@ LRESULT CALLBACK fgWindowProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPara
             SFG_Window *save_window = fgStructure.Window ;
             SFG_Menu *save_menu = fgStructure.Menu ;
             SFG_Window *parent_window = window->ActiveMenu->ParentWindow ;
-            fgSetWindow ( window ) ;
+            fgSetWindow ( parent_window ) ;
             fgStructure.Menu = window->ActiveMenu ;
 
             /* Execute the menu callback */