now also closing menus when non-client area is pressed (thanks for
[freeglut] / src / fg_internal.h
index dbae676..61ae5ce 100644 (file)
@@ -219,9 +219,9 @@ typedef void (* FGCBMultiButton  )( int, int, int, int, int );
 typedef void (* FGCBMultiMotion  )( int, int, int );
 typedef void (* FGCBMultiPassive )( int, int, int );
 
-typedef void (* FGCBFixMyNameInitContext)();
-typedef void (* FGCBFixMyNamePause)();
-typedef void (* FGCBFixMyNameResume)();
+typedef void (* FGCBInitContext)();
+typedef void (* FGCBPause)();
+typedef void (* FGCBResume)();
 
 /* The global callbacks type definitions */
 typedef void (* FGCBIdle          )( void );
@@ -402,7 +402,7 @@ struct tagSFG_WindowState
 
     GLboolean       IsFullscreen;       /* is the window fullscreen? */
 
-    GLboolean       NeedToFixMyNameInitContext; /* are OpenGL context/resources loaded? */
+    GLboolean       NeedToInitContext; /* are OpenGL context/resources loaded? */
 };
 
 
@@ -535,9 +535,9 @@ enum
     CB_MultiPassive,
 
     /* Mobile platforms LifeCycle */
-    CB_FixMyNameInitContext,
-    CB_FixMyNamePause,
-    CB_FixMyNameResume,
+    CB_InitContext,
+    CB_Pause,
+    CB_Resume,
 
     /* Presently ignored */
     CB_Select,
@@ -661,7 +661,8 @@ struct tagSFG_Enumerator
     GLboolean   found;                          /* Used to terminate search  */
     void*       data;                           /* Custom data pointer       */
 };
-typedef void (* FGCBenumerator  )( SFG_Window *, SFG_Enumerator * );
+typedef void (* FGCBWindowEnumerator  )( SFG_Window *, SFG_Enumerator * );
+typedef void (* FGCBMenuEnumerator  )( SFG_Menu *, SFG_Enumerator * );
 
 /* The bitmap font structure */
 typedef struct tagSFG_Font SFG_Font;
@@ -915,8 +916,8 @@ void fgSetCursor ( SFG_Window *window, int cursorID );
  * and userData is the a custom user-supplied pointer. Functions
  * are defined and exported from freeglut_structure.c file.
  */
-void fgEnumWindows( FGCBenumerator enumCallback, SFG_Enumerator* enumerator );
-void fgEnumSubWindows( SFG_Window* window, FGCBenumerator enumCallback,
+void fgEnumWindows( FGCBWindowEnumerator enumCallback, SFG_Enumerator* enumerator );
+void fgEnumSubWindows( SFG_Window* window, FGCBWindowEnumerator enumCallback,
                        SFG_Enumerator* enumerator );
 
 /*
@@ -940,6 +941,12 @@ SFG_Window* fgWindowByID( int windowID );
 SFG_Menu* fgMenuByID( int menuID );
 
 /*
+ * Returns active menu, if any. Assumption: only one menu active throughout application at any one time.
+ * This is easier than fgWindowByXXX as all menus are placed in one doubly linked list...
+ */
+SFG_Menu* fgGetActiveMenu( );
+
+/*
  * The menu activation and deactivation the code. This is the meat
  * of the menu user interface handling code...
  */