return 1;
}
-static SFG_Window* fghWindowUnderCursor(SFG_Window *window)
+SFG_Window* fghWindowUnderCursor(SFG_Window *window)
{
/* Check if the current window that the mouse is over is a child window
* of the window the message was sent to. Some events only sent to main window,
break;
case WM_SETFOCUS:
-/* printf("WM_SETFOCUS: %p\n", window ); */
-
+ /*printf("WM_SETFOCUS: %p\n", window );*/
lRet = DefWindowProc( hWnd, uMsg, wParam, lParam );
SetActiveWindow( window->Window.Handle );
break;
case WM_KILLFOCUS:
- {
-/* printf("WM_KILLFOCUS: %p\n", window ); */
- lRet = DefWindowProc( hWnd, uMsg, wParam, lParam );
+ /*printf("WM_KILLFOCUS: %p\n", window ); */
+ lRet = DefWindowProc( hWnd, uMsg, wParam, lParam );
- /* Check if there are any open menus that need to be closed */
- fgPlatformCheckMenuDeactivate();
- }
+ /* Check if there are any open menus that need to be closed */
+ fgPlatformCheckMenuDeactivate();
break;
#if 0
#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 )
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);