if user opens menu in parent window and then clicked child window, the menu wasn't closed. Fixed (and some cleanup)
git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@1551 7f0cb862-5218-0410-a997-914c9d46530a
This commit is contained in:
parent
5e97fed06a
commit
9fa8bcf4db
@ -339,7 +339,7 @@ static LRESULT fghWindowProcKeyPress(SFG_Window *window, UINT uMsg, GLboolean ke
|
||||
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,
|
||||
@ -551,8 +551,7 @@ LRESULT CALLBACK fgPlatformWindowProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPAR
|
||||
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 );
|
||||
@ -561,13 +560,11 @@ LRESULT CALLBACK fgPlatformWindowProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPAR
|
||||
break;
|
||||
|
||||
case WM_KILLFOCUS:
|
||||
{
|
||||
/* printf("WM_KILLFOCUS: %p\n", window ); */
|
||||
/*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();
|
||||
}
|
||||
break;
|
||||
|
||||
#if 0
|
||||
|
@ -30,6 +30,7 @@
|
||||
#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 )
|
||||
@ -63,6 +64,8 @@ void fgPlatformCheckMenuDeactivate()
|
||||
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);
|
||||
|
Reference in New Issue
Block a user