SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOSENDCHANGING |
SWP_NOZORDER
);
+
+ /* Set new width and height so we can test for that in WM_SIZE message handler and don't do anything if not needed */
+ window->State.Width = width;
+ window->State.Height = height;
}
void fgPlatformDisplayWindow ( SFG_Window *window )
{
- RedrawWindow(
+ int success = RedrawWindow(
window->Window.Handle, NULL, NULL,
RDW_NOERASE | RDW_INTERNALPAINT | RDW_INVALIDATE | RDW_UPDATENOW
);
+
+ printf("RedrawWindow (window %p): %i\n",window,success);
}
if (hwnd) /* can be NULL if mouse outside parent by the time we get here */
{
temp_window = fgWindowByHandle(hwnd);
- if (temp_window->Parent) /* Verify we got a child window */
+ if (temp_window && temp_window->Parent) /* Verify we got a child window */
child_window = temp_window;
}
}
}
#endif /* defined(_WIN32_WCE) */
+
+ window->State.Redisplay = GL_TRUE;
+ printf("create set redisplay\n");
break;
case WM_SIZE:
*/
if( window->State.Visible )
{
- window->State.NeedToResize = GL_TRUE;
+ /* get old values first to compare to below */
+ int width = window->State.Width, height=window->State.Height;
#if defined(_WIN32_WCE)
window->State.Width = HIWORD(lParam);
window->State.Height = LOWORD(lParam);
window->State.Width = LOWORD(lParam);
window->State.Height = HIWORD(lParam);
#endif /* defined(_WIN32_WCE) */
+
+ if (width!=window->State.Width || height!=window->State.Height)
+ /* Something changed, need to resize */
+ window->State.NeedToResize = GL_TRUE;
}
break;
case WM_PAINT:
/* Turn on the visibility in case it was turned off somehow */
+ printf("WM_PAINT received\n");
window->State.Visible = GL_TRUE;
InvalidateRect( hWnd, NULL, GL_FALSE ); /* Make sure whole window is repainted. Bit of a hack, but a safe one from what google turns up... */
BeginPaint( hWnd, &ps );