fghHavePendingRedisplaysCallback: docs fixed up, and return without checking subwindo...
[freeglut] / src / mswin / fg_window_mswin.c
index dd4d3a8..518e0d3 100644 (file)
@@ -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);
 }
 
 /*