Should only do check if mouse is outside client area when not opening a

submenu as well...


git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@1364 7f0cb862-5218-0410-a997-914c9d46530a
This commit is contained in:
dcnieho 2012-07-23 09:50:14 +00:00
parent 985693f528
commit fe05157a34

View File

@ -541,20 +541,23 @@ LRESULT CALLBACK fgPlatformWindowProc( HWND hWnd, UINT uMsg, WPARAM wParam,
if (!hwnd || !wnd) if (!hwnd || !wnd)
/* User switched to another application*/ /* User switched to another application*/
fgDeactivateMenu(menu->ParentWindow); fgDeactivateMenu(menu->ParentWindow);
else if (!wnd->IsMenu && wnd!=menu->ParentWindow) /* Make sure we don't kill the menu when trying to enter a submenu */ else if (!wnd->IsMenu) /* Make sure we don't kill the menu when trying to enter a submenu */
/* User switched to another FreeGLUT window */
fgDeactivateMenu(menu->ParentWindow);
else
{ {
/* Check if focus lost because non-client area of if (wnd!=menu->ParentWindow)
* window was pressed (pressing on client area is /* User switched to another FreeGLUT window */
* handled in fgCheckActiveMenu)
*/
POINT mouse_pos;
RECT clientArea = fghGetClientArea(menu->ParentWindow, GL_FALSE);
GetCursorPos(&mouse_pos);
if ( !PtInRect( &clientArea, mouse_pos ) )
fgDeactivateMenu(menu->ParentWindow); fgDeactivateMenu(menu->ParentWindow);
else
{
/* Check if focus lost because non-client area of
* window was pressed (pressing on client area is
* handled in fgCheckActiveMenu)
*/
POINT mouse_pos;
RECT clientArea = fghGetClientArea(menu->ParentWindow, GL_FALSE);
GetCursorPos(&mouse_pos);
if ( !PtInRect( &clientArea, mouse_pos ) )
fgDeactivateMenu(menu->ParentWindow);
}
} }
} }
} }