X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Fmswin%2Ffg_window_mswin.c;h=c0efc9b23bd6cc53d90506f33117d9dcc987d4da;hb=18bf83a00e2af9d24ee171b70ec345b70fc661f0;hp=518e0d32e5b9413b9426df8ed72f05694aefe29f;hpb=98584d9b257ef9cd1e5db99033ed0764b7b62ac3;p=freeglut diff --git a/src/mswin/fg_window_mswin.c b/src/mswin/fg_window_mswin.c index 518e0d3..c0efc9b 100644 --- a/src/mswin/fg_window_mswin.c +++ b/src/mswin/fg_window_mswin.c @@ -701,10 +701,7 @@ void fgPlatformOpenWindow( SFG_Window* window, const char* title, fgError( "Failed to create a window (%s)!", title ); /* Store title */ - { - window->State.pWState.WindowTitle = malloc (strlen(title) + 1); - strcpy(window->State.pWState.WindowTitle, title); - } + window->State.pWState.WindowTitle = strdup(title); #if !defined(_WIN32_WCE) /* Need to set requested style again, apparently Windows doesn't listen when requesting windows without title bar or borders */ @@ -732,8 +729,11 @@ void fgPlatformOpenWindow( SFG_Window* window, const char* title, #if defined(_WIN32_WCE) ShowWindow( window->Window.Handle, SW_SHOW ); #else - ShowWindow( window->Window.Handle, - fgState.ForceIconic ? SW_SHOWMINIMIZED : SW_SHOWNORMAL ); + { + BOOL iconic = fgState.ForceIconic && !window->IsMenu && !gameMode && !isSubWindow; + ShowWindow( window->Window.Handle, + iconic ? SW_SHOWMINIMIZED : SW_SHOWNORMAL ); + } #endif /* defined(_WIN32_WCE) */ ShowCursor( TRUE ); @@ -742,6 +742,7 @@ void fgPlatformOpenWindow( SFG_Window* window, const char* title, void fgPlatformDisplayWindow ( SFG_Window *window ) { + /* This immediately generates a WM_PAINT message upon which we call the display callbacks to redraw the window */ RedrawWindow( window->Window.Handle, NULL, NULL, RDW_NOERASE | RDW_INTERNALPAINT | RDW_INVALIDATE | RDW_UPDATENOW @@ -916,14 +917,14 @@ void fgPlatformGlutSetWindowTitle( const char* title ) free(wstr); } #else - SetWindowText( fgStructure.CurrentWindow->Window.Handle, title ); + if (!IsIconic(fgStructure.CurrentWindow->Window.Handle)) + 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); + fgStructure.CurrentWindow->State.pWState.WindowTitle = strdup(title); } /* @@ -931,11 +932,15 @@ void fgPlatformGlutSetWindowTitle( const char* title ) */ void fgPlatformGlutSetIconTitle( const char* title ) { +#ifndef _WIN32_WCE + if (IsIconic(fgStructure.CurrentWindow->Window.Handle)) + 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); + fgStructure.CurrentWindow->State.pWState.IconTitle = strdup(title); } /*