some cleanup
now have function fghPlatformGetMousePos to get current mouse position in screen coordinates Using this in fg_menu as all that code should be platform independent git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@1376 7f0cb862-5218-0410-a997-914c9d46530a
This commit is contained in:
parent
3162c53c9f
commit
faf732bda6
@ -720,12 +720,13 @@ void fgDeactivateMenu( SFG_Window *window )
|
|||||||
if (fgState.MenuStatusCallback)
|
if (fgState.MenuStatusCallback)
|
||||||
{
|
{
|
||||||
/* Get cursor position on screen and convert to relative to parent_window's client area */
|
/* Get cursor position on screen and convert to relative to parent_window's client area */
|
||||||
POINT mouse_pos;
|
SFG_XYUse mouse_pos;
|
||||||
GetCursorPos(&mouse_pos);
|
fghPlatformGetMousePos(&mouse_pos);
|
||||||
mouse_pos.x -= glutGet( GLUT_WINDOW_X );
|
|
||||||
mouse_pos.y -= glutGet( GLUT_WINDOW_Y );
|
|
||||||
|
|
||||||
fgState.MenuStatusCallback(GLUT_MENU_NOT_IN_USE, mouse_pos.x, mouse_pos.y);
|
mouse_pos.X -= glutGet( GLUT_WINDOW_X );
|
||||||
|
mouse_pos.Y -= glutGet( GLUT_WINDOW_Y );
|
||||||
|
|
||||||
|
fgState.MenuStatusCallback(GLUT_MENU_NOT_IN_USE, mouse_pos.X, mouse_pos.Y);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -85,13 +85,6 @@ typedef BOOL (WINAPI *pRegisterTouchWindow)(HWND,ULONG);
|
|||||||
static pRegisterTouchWindow fghRegisterTouchWindow = (pRegisterTouchWindow)0xDEADBEEF;
|
static pRegisterTouchWindow fghRegisterTouchWindow = (pRegisterTouchWindow)0xDEADBEEF;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
|
||||||
* Helper functions for getting client area from the window rect
|
|
||||||
* and the window rect from the client area given the style of the window
|
|
||||||
* (or a valid window pointer from which the style can be queried).
|
|
||||||
*/
|
|
||||||
extern void fghGetBorderWidth(const DWORD windowStyle, int* xBorderWidth, int* yBorderWidth);
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Setup the pixel format for a Win32 window
|
* Setup the pixel format for a Win32 window
|
||||||
@ -378,6 +371,38 @@ void fgPlatformSetWindow ( SFG_Window *window )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void fghPlatformGetMousePos(SFG_XYUse *mouse_pos)
|
||||||
|
{
|
||||||
|
POINT pos;
|
||||||
|
GetCursorPos(&pos);
|
||||||
|
|
||||||
|
mouse_pos->X = pos.x;
|
||||||
|
mouse_pos->Y = pos.y;
|
||||||
|
mouse_pos->Use = GL_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Returns the width of the window borders based on the window's style.
|
||||||
|
*/
|
||||||
|
void fghGetBorderWidth(const DWORD windowStyle, int* xBorderWidth, int* yBorderWidth)
|
||||||
|
{
|
||||||
|
if (windowStyle & WS_THICKFRAME)
|
||||||
|
{
|
||||||
|
*xBorderWidth = GetSystemMetrics(SM_CXSIZEFRAME);
|
||||||
|
*yBorderWidth = GetSystemMetrics(SM_CYSIZEFRAME);
|
||||||
|
}
|
||||||
|
else if (windowStyle & WS_DLGFRAME)
|
||||||
|
{
|
||||||
|
*xBorderWidth = GetSystemMetrics(SM_CXFIXEDFRAME);
|
||||||
|
*yBorderWidth = GetSystemMetrics(SM_CYFIXEDFRAME);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
*xBorderWidth = 0;
|
||||||
|
*yBorderWidth = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Computes position of corners of window Rect (outer position including
|
/* Computes position of corners of window Rect (outer position including
|
||||||
* decorations) based on the provided client rect and based on the style
|
* decorations) based on the provided client rect and based on the style
|
||||||
@ -516,27 +541,6 @@ RECT fghGetClientArea( const SFG_Window *window, BOOL wantPosOutside )
|
|||||||
return windowRect;
|
return windowRect;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Returns the width of the window borders based on the window's style.
|
|
||||||
*/
|
|
||||||
void fghGetBorderWidth(const DWORD windowStyle, int* xBorderWidth, int* yBorderWidth)
|
|
||||||
{
|
|
||||||
if (windowStyle & WS_THICKFRAME)
|
|
||||||
{
|
|
||||||
*xBorderWidth = GetSystemMetrics(SM_CXSIZEFRAME);
|
|
||||||
*yBorderWidth = GetSystemMetrics(SM_CYSIZEFRAME);
|
|
||||||
}
|
|
||||||
else if (windowStyle & WS_DLGFRAME)
|
|
||||||
{
|
|
||||||
*xBorderWidth = GetSystemMetrics(SM_CXFIXEDFRAME);
|
|
||||||
*yBorderWidth = GetSystemMetrics(SM_CYFIXEDFRAME);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
*xBorderWidth = 0;
|
|
||||||
*yBorderWidth = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#if(WINVER >= 0x500)
|
#if(WINVER >= 0x500)
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user