X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Ffreeglut_state.c;h=9e3a627de48be3f4e755d95d1f4a928af1aac606;hb=62f61e0957a93d5d6188e146cf5f2aeaf98e6161;hp=a763d27ad9c153ecf6f2b9bc3e1169af5ed47d26;hpb=bb97ecab3add22cf774d3bb8bdb9d1be537cc524;p=freeglut diff --git a/src/freeglut_state.c b/src/freeglut_state.c index a763d27..9e3a627 100644 --- a/src/freeglut_state.c +++ b/src/freeglut_state.c @@ -64,30 +64,6 @@ static int fghGetConfig( int attribute ) } #endif -/* Check if the window is in full screen state. */ -static int fghCheckFullScreen(void) -{ -#if TARGET_HOST_POSIX_X11 - - int result; - - result = 0; - if (fgDisplay.StateFullScreen != None) - { - result = fgHintPresent(fgStructure.CurrentWindow->Window.Handle, - fgDisplay.State, - fgDisplay.StateFullScreen); - } - - return result; - -#else - - return 0; - -#endif -} - /* -- INTERFACE FUNCTIONS -------------------------------------------------- */ /* @@ -334,7 +310,7 @@ int FGAPIENTRY glutGet( GLenum eWhat ) GLXFBConfig * fbconfig; int isPossible; - fbconfig = fgChooseFBConfig(); + fbconfig = fgChooseFBConfig(NULL); if (fbconfig == NULL) { @@ -472,24 +448,11 @@ int FGAPIENTRY glutGet( GLenum eWhat ) freeglut_return_val_if_fail( fgStructure.CurrentWindow != NULL, 0 ); - /* - * We need to call GetWindowRect() first... - * (this returns the pixel coordinates of the outside of the window) - */ +#if defined(_WIN32_WCE) GetWindowRect( fgStructure.CurrentWindow->Window.Handle, &winRect ); - - /* ...then we've got to correct the results we've just received... */ - -#if !defined(_WIN32_WCE) - if ( ( fgStructure.GameModeWindow != fgStructure.CurrentWindow ) && ( fgStructure.CurrentWindow->Parent == NULL ) && - ( ! fgStructure.CurrentWindow->IsMenu ) ) - { - winRect.left += GetSystemMetrics( SM_CXSIZEFRAME ); - winRect.right -= GetSystemMetrics( SM_CXSIZEFRAME ); - winRect.top += GetSystemMetrics( SM_CYSIZEFRAME ) + GetSystemMetrics( SM_CYCAPTION ); - winRect.bottom -= GetSystemMetrics( SM_CYSIZEFRAME ); - } -#endif /* !defined(_WIN32_WCE) */ +#else + winRect = fghGetClientArea(fgStructure.CurrentWindow, FALSE); +#endif /* defined(_WIN32_WCE) */ switch( eWhat ) { @@ -502,17 +465,32 @@ int FGAPIENTRY glutGet( GLenum eWhat ) break; case GLUT_WINDOW_BORDER_WIDTH : -#if defined(_WIN32_WCE) - return 0; -#else - return GetSystemMetrics( SM_CXSIZEFRAME ); -#endif /* !defined(_WIN32_WCE) */ - case GLUT_WINDOW_HEADER_HEIGHT : #if defined(_WIN32_WCE) return 0; #else - return GetSystemMetrics( SM_CYCAPTION ); + { + DWORD windowStyle; + + if (fgStructure.CurrentWindow && fgStructure.CurrentWindow->Window.Handle) + windowStyle = GetWindowLong(fgStructure.CurrentWindow->Window.Handle, GWL_STYLE); + else + /* If no window, return sizes for a default window with title bar and border */ + windowStyle = WS_OVERLAPPEDWINDOW; + + switch( eWhat ) + { + case GLUT_WINDOW_BORDER_WIDTH: + { + int xBorderWidth, yBorderWidth; + fghGetBorderWidth(windowStyle, &xBorderWidth, &yBorderWidth); + return xBorderWidth; + } + case GLUT_WINDOW_HEADER_HEIGHT: + /* Need to query for WS_MAXIMIZEBOX to see if we have a title bar, the WS_CAPTION query is also true for a WS_DLGFRAME only... */ + return (windowStyle & WS_MAXIMIZEBOX)? GetSystemMetrics( SM_CYCAPTION ) : 0; + } + } #endif /* defined(_WIN32_WCE) */ case GLUT_DISPLAY_MODE_POSSIBLE: @@ -568,7 +546,7 @@ int FGAPIENTRY glutGet( GLenum eWhat ) return fgState.DirectContext; case GLUT_FULL_SCREEN: - return fghCheckFullScreen(); + return fgStructure.CurrentWindow->State.IsFullscreen; case GLUT_AUX: return fgState.AuxiliaryBufferNumber;