Fix T42489 and T52936: Loading blend with minimized window results in crash or empty screen on windows.

Reviewed By: @brecht , @sergey

Differential Revision: http://developer.blender.org/D2866
This commit is contained in:
Ray Molenkamp 2017-10-04 11:44:22 -06:00
parent 296757804c
commit 57d7e5b6ee
2 changed files with 25 additions and 13 deletions

@ -402,21 +402,29 @@ void GHOST_WindowWin32::getClientBounds(GHOST_Rect &bounds) const
{
RECT rect;
POINT coord;
::GetClientRect(m_hWnd, &rect);
if (!IsIconic(m_hWnd)) {
::GetClientRect(m_hWnd, &rect);
coord.x = rect.left;
coord.y = rect.top;
::ClientToScreen(m_hWnd, &coord);
coord.x = rect.left;
coord.y = rect.top;
::ClientToScreen(m_hWnd, &coord);
bounds.m_l = coord.x;
bounds.m_t = coord.y;
bounds.m_l = coord.x;
bounds.m_t = coord.y;
coord.x = rect.right;
coord.y = rect.bottom;
::ClientToScreen(m_hWnd, &coord);
coord.x = rect.right;
coord.y = rect.bottom;
::ClientToScreen(m_hWnd, &coord);
bounds.m_r = coord.x;
bounds.m_b = coord.y;
bounds.m_r = coord.x;
bounds.m_b = coord.y;
}
else {
bounds.m_b = 0;
bounds.m_l = 0;
bounds.m_r = 0;
bounds.m_t = 0;
}
}

@ -477,8 +477,12 @@ static void wm_window_ghostwindow_add(wmWindowManager *wm, const char *title, wm
/* store actual window size in blender window */
bounds = GHOST_GetClientBounds(win->ghostwin);
win->sizex = GHOST_GetWidthRectangle(bounds);
win->sizey = GHOST_GetHeightRectangle(bounds);
/* win32: gives undefined window size when minimized */
if (GHOST_GetWindowState(win->ghostwin) != GHOST_kWindowStateMinimized) {
win->sizex = GHOST_GetWidthRectangle(bounds);
win->sizey = GHOST_GetHeightRectangle(bounds);
}
GHOST_DisposeRectangle(bounds);
#ifndef __APPLE__