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
@ -371,8 +371,8 @@ struct tagSFG_Context
|
||||
SFG_PlatformContext pContext; /* The window's FBConfig (X11) or device context (Windows) */
|
||||
|
||||
int DoubleBuffered; /* Treat the window as double-buffered */
|
||||
GLint attribute_v_coord;
|
||||
GLint attribute_v_normal;
|
||||
GLint attribute_v_coord;
|
||||
GLint attribute_v_normal;
|
||||
};
|
||||
|
||||
|
||||
|
@ -720,12 +720,13 @@ void fgDeactivateMenu( SFG_Window *window )
|
||||
if (fgState.MenuStatusCallback)
|
||||
{
|
||||
/* Get cursor position on screen and convert to relative to parent_window's client area */
|
||||
POINT mouse_pos;
|
||||
GetCursorPos(&mouse_pos);
|
||||
mouse_pos.x -= glutGet( GLUT_WINDOW_X );
|
||||
mouse_pos.y -= glutGet( GLUT_WINDOW_Y );
|
||||
SFG_XYUse 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);
|
||||
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;
|
||||
#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
|
||||
@ -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
|
||||
* 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;
|
||||
}
|
||||
|
||||
/* 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)
|
||||
typedef struct
|
||||
{
|
||||
|
Reference in New Issue
Block a user