X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;ds=sidebyside;f=src%2Fmswin%2Ffg_cursor_mswin.c;h=d14da5904b7e4aea48cc6a3b204337242e23aefc;hb=c21722a39780abcd692cb01978fbf57fc7d06a45;hp=1241e0a5ef1c6d7267827ac98a3d90b9860f5a40;hpb=d9de8ec42b076f875059acf8c02299689c9aa756;p=freeglut diff --git a/src/mswin/fg_cursor_mswin.c b/src/mswin/fg_cursor_mswin.c index 1241e0a..d14da59 100644 --- a/src/mswin/fg_cursor_mswin.c +++ b/src/mswin/fg_cursor_mswin.c @@ -71,7 +71,7 @@ void fgPlatformSetCursor ( SFG_Window *window, int cursorID ) switch( cursorID ) { MAP_CURSOR( GLUT_CURSOR_RIGHT_ARROW, IDC_ARROW ); - MAP_CURSOR( GLUT_CURSOR_LEFT_ARROW, IDC_ARROW ); + MAP_CURSOR( GLUT_CURSOR_LEFT_ARROW, IDC_ARROW ); /* XXX ToDo */ MAP_CURSOR( GLUT_CURSOR_INFO, IDC_HELP ); MAP_CURSOR( GLUT_CURSOR_DESTROY, IDC_CROSS ); MAP_CURSOR( GLUT_CURSOR_HELP, IDC_HELP ); @@ -82,7 +82,7 @@ void fgPlatformSetCursor ( SFG_Window *window, int cursorID ) MAP_CURSOR( GLUT_CURSOR_CROSSHAIR, IDC_CROSS ); MAP_CURSOR( GLUT_CURSOR_UP_DOWN, IDC_SIZENS ); MAP_CURSOR( GLUT_CURSOR_LEFT_RIGHT, IDC_SIZEWE ); - MAP_CURSOR( GLUT_CURSOR_TOP_SIDE, IDC_ARROW ); /* XXX ToDo */ + MAP_CURSOR( GLUT_CURSOR_TOP_SIDE, IDC_UPARROW ); MAP_CURSOR( GLUT_CURSOR_BOTTOM_SIDE, IDC_ARROW ); /* XXX ToDo */ MAP_CURSOR( GLUT_CURSOR_LEFT_SIDE, IDC_ARROW ); /* XXX ToDo */ MAP_CURSOR( GLUT_CURSOR_RIGHT_SIDE, IDC_ARROW ); /* XXX ToDo */ @@ -90,9 +90,24 @@ void fgPlatformSetCursor ( SFG_Window *window, int cursorID ) MAP_CURSOR( GLUT_CURSOR_TOP_RIGHT_CORNER, IDC_SIZENESW ); MAP_CURSOR( GLUT_CURSOR_BOTTOM_RIGHT_CORNER, IDC_SIZENWSE ); MAP_CURSOR( GLUT_CURSOR_BOTTOM_LEFT_CORNER, IDC_SIZENESW ); - MAP_CURSOR( GLUT_CURSOR_INHERIT, IDC_ARROW ); /* XXX ToDo */ ZAP_CURSOR( GLUT_CURSOR_NONE, NULL ); MAP_CURSOR( GLUT_CURSOR_FULL_CROSSHAIR, IDC_CROSS ); /* XXX ToDo */ + case GLUT_CURSOR_INHERIT: + { + SFG_Window *temp_window = window; + while (temp_window->Parent) + { + temp_window = temp_window->Parent; + if (temp_window->State.Cursor != GLUT_CURSOR_INHERIT) + { + fgPlatformSetCursor(window,temp_window->State.Cursor); + return; + } + } + /* No parent, or no parent with cursor type set. Fall back to default */ + fgPlatformSetCursor(window,GLUT_CURSOR_LEFT_ARROW); + } + break; default: fgError( "Unknown cursor type: %d", cursorID ); @@ -115,6 +130,8 @@ void fgPlatformWarpPointer ( int x, int y ) void fghPlatformGetCursorPos(SFG_XYUse *mouse_pos) { + /* Get current pointer location in screen coordinates + */ POINT pos; GetCursorPos(&pos);