now handling WM_MOUSEACTIVATE so that menus don't get activated upon mouseclick
git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@1607 7f0cb862-5218-0410-a997-914c9d46530a
This commit is contained in:
parent
23e0e585ef
commit
9e4fc43b36
@ -96,7 +96,7 @@ struct tagSFG_PlatformWindowState
|
|||||||
DWORD OldStyleEx; /* window Ex style - stored before the window is made fullscreen */
|
DWORD OldStyleEx; /* window Ex style - stored before the window is made fullscreen */
|
||||||
BOOL OldMaximized; /* window maximized state - stored before the window is made fullscreen */
|
BOOL OldMaximized; /* window maximized state - stored before the window is made fullscreen */
|
||||||
|
|
||||||
GLboolean MouseTracking; /* Needed for generating GLUT_ENTERED and GLUT_LEFT entry func callbacks on windows */
|
BOOL MouseTracking; /* Needed for generating GLUT_ENTERED and GLUT_LEFT entry func callbacks on windows */
|
||||||
|
|
||||||
/* Need to store window titles to emulate
|
/* Need to store window titles to emulate
|
||||||
* glutSetIconTitle/glutSetWindowTitle as Windows has only
|
* glutSetIconTitle/glutSetWindowTitle as Windows has only
|
||||||
|
@ -589,9 +589,20 @@ LRESULT CALLBACK fgPlatformWindowProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPAR
|
|||||||
fgPlatformCheckMenuDeactivate();
|
fgPlatformCheckMenuDeactivate();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case WM_MOUSEACTIVATE:
|
||||||
|
/* Clicks should not activate the menu.
|
||||||
|
* Especially important when clicking on a menu's submenu item which has no effect.
|
||||||
|
*/
|
||||||
|
printf("WM_MOUSEACTIVATE\n");
|
||||||
|
if (window->IsMenu)
|
||||||
|
lRet = MA_NOACTIVATEANDEAT;
|
||||||
|
else
|
||||||
|
lRet = DefWindowProc( hWnd, uMsg, wParam, lParam );
|
||||||
|
break;
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
case WM_ACTIVATE:
|
case WM_ACTIVATE:
|
||||||
//printf("WM_ACTIVATE: %x (ID: %i) %d %d\n",lParam, window->ID, HIWORD(wParam), LOWORD(wParam));
|
/* printf("WM_ACTIVATE: %x (ID: %i) %d %d\n",lParam, window->ID, HIWORD(wParam), LOWORD(wParam)); */
|
||||||
if (LOWORD(wParam) != WA_INACTIVE)
|
if (LOWORD(wParam) != WA_INACTIVE)
|
||||||
{
|
{
|
||||||
/* printf("WM_ACTIVATE: fgSetCursor( %p, %d)\n", window,
|
/* printf("WM_ACTIVATE: fgSetCursor( %p, %d)\n", window,
|
||||||
@ -629,7 +640,7 @@ LRESULT CALLBACK fgPlatformWindowProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPAR
|
|||||||
tme.hwndTrack = window->Window.Handle;
|
tme.hwndTrack = window->Window.Handle;
|
||||||
TrackMouseEvent(&tme);
|
TrackMouseEvent(&tme);
|
||||||
|
|
||||||
window->State.pWState.MouseTracking = GL_TRUE;
|
window->State.pWState.MouseTracking = TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -648,7 +659,7 @@ LRESULT CALLBACK fgPlatformWindowProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPAR
|
|||||||
INVOKE_WCB( *window, Entry, ( GLUT_LEFT ) );
|
INVOKE_WCB( *window, Entry, ( GLUT_LEFT ) );
|
||||||
fgSetWindow(saved_window);
|
fgSetWindow(saved_window);
|
||||||
|
|
||||||
window->State.pWState.MouseTracking = GL_FALSE;
|
window->State.pWState.MouseTracking = FALSE;
|
||||||
lRet = 0; /* As per docs, must return zero */
|
lRet = 0; /* As per docs, must return zero */
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
Reference in New Issue
Block a user