#include <GL/freeglut.h>
#include "../fg_internal.h"
-extern void fghGetClientArea( RECT *clientRect, const SFG_Window *window );
+extern void fghGetClientArea( RECT *clientRect, const SFG_Window *window, BOOL posIsOutside );
+extern SFG_Window* fghWindowUnderCursor(SFG_Window *window);
GLvoid fgPlatformGetGameModeVMaxExtent( SFG_Window* window, int* x, int* y )
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);
*/
POINT mouse_pos;
RECT clientArea;
- fghGetClientArea(&clientArea,menu->ParentWindow);
+ fghGetClientArea(&clientArea,menu->ParentWindow, FALSE);
GetCursorPos(&mouse_pos);
if ( !PtInRect( &clientArea, mouse_pos ) )
fgDeactivateMenu(menu->ParentWindow);