X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Fmswin%2Ffg_window_mswin.c;h=518e0d32e5b9413b9426df8ed72f05694aefe29f;hb=4a451851ec51ea7c3b79534fa5faebadceedf4df;hp=dd4d3a8f794ec0409093bfca9f5ece7d32ad3c72;hpb=a7362e5d688d2d2873d6bab49b86302aa588f1bf;p=freeglut diff --git a/src/mswin/fg_window_mswin.c b/src/mswin/fg_window_mswin.c index dd4d3a8..518e0d3 100644 --- a/src/mswin/fg_window_mswin.c +++ b/src/mswin/fg_window_mswin.c @@ -406,7 +406,6 @@ void fghGetStyleFromWindow( const SFG_Window *window, DWORD *windowStyle, DWORD } } - /* Computes position of corners of window Rect (outer position including * decorations) based on the provided client rect and based on the style * of the window in question. @@ -455,7 +454,6 @@ void fghComputeWindowRectFromClientArea_QueryWindow( RECT *clientRect, const SFG fghComputeWindowRectFromClientArea_UseStyle(clientRect, windowStyle, windowExStyle, posIsOutside); } - /* Gets the rect describing the client area (drawable area) of the * specified window. Output is position of corners of client area (drawable area) on the screen. * Does not touch clientRect if window pointer or window handle is NULL. @@ -464,7 +462,6 @@ void fghComputeWindowRectFromClientArea_QueryWindow( RECT *clientRect, const SFG void fghGetClientArea( RECT *clientRect, const SFG_Window *window ) { POINT topLeftClient = {0,0}; - POINT topLeftWindow = {0,0}; freeglut_return_if_fail((window && window->Window.Handle)); @@ -476,6 +473,7 @@ void fghGetClientArea( RECT *clientRect, const SFG_Window *window ) OffsetRect(clientRect,topLeftClient.x,topLeftClient.y); } + #if(WINVER >= 0x500) typedef struct { @@ -702,6 +700,12 @@ void fgPlatformOpenWindow( SFG_Window* window, const char* title, if( !( window->Window.Handle ) ) fgError( "Failed to create a window (%s)!", title ); + /* Store title */ + { + window->State.pWState.WindowTitle = malloc (strlen(title) + 1); + strcpy(window->State.pWState.WindowTitle, title); + } + #if !defined(_WIN32_WCE) /* Need to set requested style again, apparently Windows doesn't listen when requesting windows without title bar or borders */ SetWindowLong(window->Window.Handle, GWL_STYLE, flags); @@ -859,6 +863,12 @@ void fgPlatformCloseWindow( SFG_Window* window ) } DestroyWindow( window->Window.Handle ); + + /* clean up copied title text(s) */ + if (window->State.pWState.WindowTitle) + free(window->State.pWState.WindowTitle); + if (window->State.pWState.IconTitle) + free(window->State.pWState.IconTitle); } @@ -908,24 +918,24 @@ void fgPlatformGlutSetWindowTitle( const char* title ) #else SetWindowText( fgStructure.CurrentWindow->Window.Handle, title ); #endif + + /* Make copy of string to refer to later */ + if (fgStructure.CurrentWindow->State.pWState.WindowTitle) + free(fgStructure.CurrentWindow->State.pWState.WindowTitle); + fgStructure.CurrentWindow->State.pWState.WindowTitle = malloc (strlen(title) + 1); + strcpy(fgStructure.CurrentWindow->State.pWState.WindowTitle, title); } /* * Set the current window's iconified title - * There really isn't a way to set the icon name separate from the - * windows name in Win32, so, just set the windows name. */ void fgPlatformGlutSetIconTitle( const char* title ) { -#ifdef _WIN32_WCE - { - wchar_t* wstr = fghWstrFromStr(title); - SetWindowText( fgStructure.CurrentWindow->Window.Handle, wstr ); - free(wstr); - } -#else - SetWindowText( fgStructure.CurrentWindow->Window.Handle, title ); -#endif + /* Make copy of string to refer to later */ + if (fgStructure.CurrentWindow->State.pWState.IconTitle) + free(fgStructure.CurrentWindow->State.pWState.IconTitle); + fgStructure.CurrentWindow->State.pWState.IconTitle = malloc (strlen(title) + 1); + strcpy(fgStructure.CurrentWindow->State.pWState.IconTitle, title); } /*