X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Ffreeglut_state.c;h=3fadfa6ed70429247a34be1b3e531a99524a3369;hb=b047745311a0c214683451748dd67195f530f559;hp=3dbc4bbc82cebdb049f25b74039bce8250074e09;hpb=fe89df7de1aa6a732a441e983cce03e1fd6fd81a;p=freeglut diff --git a/src/freeglut_state.c b/src/freeglut_state.c index 3dbc4bb..3fadfa6 100644 --- a/src/freeglut_state.c +++ b/src/freeglut_state.c @@ -215,10 +215,44 @@ int FGAPIENTRY glutGet( GLenum eWhat ) */ case GLUT_WINDOW_X: case GLUT_WINDOW_Y: + case GLUT_WINDOW_BORDER_WIDTH: + case GLUT_WINDOW_HEADER_HEIGHT: + { + int x, y; + Window w; + + if( fgStructure.Window == NULL ) + return( 0 ); + + XTranslateCoordinates( + fgDisplay.Display, + fgStructure.Window->Window.Handle, + fgDisplay.RootWindow, + 0, 0, &x, &y, &w); + + switch ( eWhat ) + { + case GLUT_WINDOW_X: return x; + case GLUT_WINDOW_Y: return y; + } + + if ( w == 0 ) + return( 0 ); /* Just in case */ + + XTranslateCoordinates( + fgDisplay.Display, + fgStructure.Window->Window.Handle, + w, 0, 0, &x, &y, &w); + + switch ( eWhat ) + { + case GLUT_WINDOW_BORDER_WIDTH: return x; + case GLUT_WINDOW_HEADER_HEIGHT: return y; + } + } + case GLUT_WINDOW_WIDTH: case GLUT_WINDOW_HEIGHT: - case GLUT_WINDOW_BORDER_WIDTH : - case GLUT_WINDOW_HEADER_HEIGHT : { XWindowAttributes winAttributes; @@ -242,12 +276,8 @@ int FGAPIENTRY glutGet( GLenum eWhat ) */ switch ( eWhat ) { - case GLUT_WINDOW_X: return winAttributes.x ; - case GLUT_WINDOW_Y: return winAttributes.y ; case GLUT_WINDOW_WIDTH: return winAttributes.width ; case GLUT_WINDOW_HEIGHT: return winAttributes.height ; - case GLUT_WINDOW_BORDER_WIDTH : return winAttributes.border_width ; - case GLUT_WINDOW_HEADER_HEIGHT : return winAttributes.border_width * 3 ; /* a kludge for now */ } }