projects
/
freeglut
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
same as for all other geometry functions, teapot takes double, not GLdouble now.
[freeglut]
/
src
/
mswin
/
fg_window_mswin.c
diff --git
a/src/mswin/fg_window_mswin.c
b/src/mswin/fg_window_mswin.c
index
dd4d3a8
..
c0efc9b
100644
(file)
--- 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.
/* 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);
}
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.
/* 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};
void fghGetClientArea( RECT *clientRect, const SFG_Window *window )
{
POINT topLeftClient = {0,0};
- POINT topLeftWindow = {0,0};
freeglut_return_if_fail((window && window->Window.Handle));
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);
}
OffsetRect(clientRect,topLeftClient.x,topLeftClient.y);
}
+
#if(WINVER >= 0x500)
typedef struct
{
#if(WINVER >= 0x500)
typedef struct
{
@@
-702,6
+700,9
@@
void fgPlatformOpenWindow( SFG_Window* window, const char* title,
if( !( window->Window.Handle ) )
fgError( "Failed to create a window (%s)!", title );
if( !( window->Window.Handle ) )
fgError( "Failed to create a window (%s)!", title );
+ /* Store 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 */
SetWindowLong(window->Window.Handle, GWL_STYLE, flags);
#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);
@@
-728,8
+729,11
@@
void fgPlatformOpenWindow( SFG_Window* window, const char* title,
#if defined(_WIN32_WCE)
ShowWindow( window->Window.Handle, SW_SHOW );
#else
#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 );
#endif /* defined(_WIN32_WCE) */
ShowCursor( TRUE );
@@
-738,6
+742,7
@@
void fgPlatformOpenWindow( SFG_Window* window, const char* title,
void fgPlatformDisplayWindow ( SFG_Window *window )
{
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
RedrawWindow(
window->Window.Handle, NULL, NULL,
RDW_NOERASE | RDW_INTERNALPAINT | RDW_INVALIDATE | RDW_UPDATENOW
@@
-859,6
+864,12
@@
void fgPlatformCloseWindow( SFG_Window* window )
}
DestroyWindow( window->Window.Handle );
}
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);
}
}
@@
-906,26
+917,30
@@
void fgPlatformGlutSetWindowTitle( const char* title )
free(wstr);
}
#else
free(wstr);
}
#else
- SetWindowText( fgStructure.CurrentWindow->Window.Handle, title );
+ if (!IsIconic(fgStructure.CurrentWindow->Window.Handle))
+ SetWindowText( fgStructure.CurrentWindow->Window.Handle, title );
#endif
#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 = strdup(title);
}
/*
* Set the current window's iconified 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 )
{
*/
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 );
+#ifndef _WIN32_WCE
+ if (IsIconic(fgStructure.CurrentWindow->Window.Handle))
+ SetWindowText( fgStructure.CurrentWindow->Window.Handle, title );
#endif
#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 = strdup(title);
}
/*
}
/*