case WM_KILLFOCUS:
{
SFG_Menu* menu = NULL;
-/* printf("WM_KILLFOCUS (ismenu: %i): %p\n", window->IsMenu, window ); */
+/* printf("WM_KILLFOCUS: %p\n", window ); */
lRet = DefWindowProc( hWnd, uMsg, wParam, lParam );
INVOKE_WCB( *window, Entry, ( GLUT_LEFT ) );
application or FreeGLUT window (if one is running multiple
windows). If so, close menu the active menu.
*/
- if ( fgStructure.CurrentMenu )
+ if ( fgStructure.Menus.First )
menu = fgGetActiveMenu();
if ( menu )
{
SFG_Window* wnd = NULL;
- HWND hwnd = GetForegroundWindow(); /* Get window with current focus */
+ HWND hwnd = GetFocus(); /* Get window with current focus - NULL for non freeglut windows */
if (hwnd)
- /* See if its one of our windows */
+ /* See which of our windows it is */
wnd = fgWindowByHandle(hwnd);
if (!hwnd || !wnd)
/* User switched to another application*/
fgDeactivateMenu(menu->ParentWindow);
- else if (
- ( wnd->IsMenu && wnd->ActiveMenu && wnd->ActiveMenu->ParentWindow!=menu->ParentWindow) || /* Make sure we don't kill the menu when trying to enter a submenu */
- (!wnd->IsMenu && wnd!=menu->ParentWindow)
- )
+ else if (!wnd->IsMenu && wnd!=menu->ParentWindow)
/* User switched to another FreeGLUT window */
fgDeactivateMenu(menu->ParentWindow);
}