#include <GL/freeglut.h>
#include "../fg_internal.h"
-extern RECT fghGetClientArea( const SFG_Window *window, BOOL wantPosOutside );
+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 )
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);
else
{
/* Check if focus lost because non-client area of
- * window was pressed (pressing on client area is
- * handled in fgCheckActiveMenu)
- */
+ * window was pressed (pressing on client area is
+ * handled in fgCheckActiveMenu)
+ */
POINT mouse_pos;
- RECT clientArea = fghGetClientArea(menu->ParentWindow, GL_FALSE);
+ RECT clientArea;
+ fghGetClientArea(&clientArea,menu->ParentWindow);
GetCursorPos(&mouse_pos);
if ( !PtInRect( &clientArea, mouse_pos ) )
fgDeactivateMenu(menu->ParentWindow);