X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Fmswin%2Ffg_menu_mswin.c;h=48e3940ebea238fc61f0b8ee34106eafb1bbdd73;hb=4a451851ec51ea7c3b79534fa5faebadceedf4df;hp=a5afd46b128319fd3a8ae9e7060fedfa58373f3c;hpb=29ce77740209818d54bdea174d193307314f4084;p=freeglut diff --git a/src/mswin/fg_menu_mswin.c b/src/mswin/fg_menu_mswin.c index a5afd46..48e3940 100644 --- a/src/mswin/fg_menu_mswin.c +++ b/src/mswin/fg_menu_mswin.c @@ -30,6 +30,7 @@ #include "../fg_internal.h" extern void fghGetClientArea( RECT *clientRect, const SFG_Window *window ); +extern SFG_Window* fghWindowUnderCursor(SFG_Window *window); GLvoid fgPlatformGetGameModeVMaxExtent( SFG_Window* window, int* x, int* y ) @@ -63,6 +64,8 @@ void fgPlatformCheckMenuDeactivate() fgDeactivateMenu(menu->ParentWindow); else if (!wnd->IsMenu) /* Make sure we don't kill the menu when trying to enter a submenu */ { + /* we need to know if user clicked a child window, any displayable area clicked that is not the menu's parent window should close the menu */ + wnd = fghWindowUnderCursor(wnd); if (wnd!=menu->ParentWindow) /* User switched to another FreeGLUT window */ fgDeactivateMenu(menu->ParentWindow);