+static void fghUpdateWindowStatus(SFG_Window *window, GLboolean visState)
+{
+ SFG_Window* child;
+
+ if (window->State.Visible != visState)
+ {
+ window->State.Visible = visState;
+ INVOKE_WCB( *window, WindowStatus, ( visState ? GLUT_FULLY_RETAINED:GLUT_HIDDEN ) );
+ }
+
+ /* Also set visibility state for children */
+ for( child = ( SFG_Window * )window->Children.First;
+ child;
+ child = ( SFG_Window * )child->Node.Next )
+ {
+ fghUpdateWindowStatus(child, visState);
+ }
+}
+
+static void fghNotifyWindowStatus(SFG_Window *window)
+{
+ SFG_Window* child;
+
+ INVOKE_WCB( *window, WindowStatus, ( window->State.Visible?GLUT_FULLY_RETAINED:GLUT_HIDDEN ) );
+
+ /* Also notify children */
+ for( child = ( SFG_Window * )window->Children.First;
+ child;
+ child = ( SFG_Window * )child->Node.Next )
+ {
+ fghNotifyWindowStatus(child);
+ }
+}
+