Fix for windows size on win32
This commit is contained in:
@@ -470,38 +470,22 @@ void GHOST_WindowWin32::getWindowBounds(GHOST_Rect& bounds) const
|
||||
void GHOST_WindowWin32::getClientBounds(GHOST_Rect& bounds) const
|
||||
{
|
||||
RECT rect;
|
||||
GHOST_TWindowState state = this->getState();
|
||||
LONG_PTR result = ::GetWindowLongPtr(m_hWnd, GWL_STYLE);
|
||||
int sm_cysizeframe = GetSystemMetrics(SM_CYSIZEFRAME);
|
||||
::GetWindowRect(m_hWnd, &rect);
|
||||
POINT coord;
|
||||
::GetClientRect(m_hWnd, &rect);
|
||||
|
||||
if ((result & (WS_POPUP | WS_MAXIMIZE)) != (WS_POPUP | WS_MAXIMIZE)) {
|
||||
if (state == GHOST_kWindowStateMaximized) {
|
||||
// in maximized state we don't have borders on the window
|
||||
bounds.m_b = rect.bottom - GetSystemMetrics(SM_CYCAPTION) - sm_cysizeframe * 2;
|
||||
bounds.m_l = rect.left + sm_cysizeframe;
|
||||
bounds.m_r = rect.right - sm_cysizeframe;
|
||||
bounds.m_t = rect.top;
|
||||
}
|
||||
else if (state == GHOST_kWindowStateEmbedded) {
|
||||
bounds.m_b = rect.bottom;
|
||||
bounds.m_l = rect.left;
|
||||
bounds.m_r = rect.right;
|
||||
bounds.m_t = rect.top;
|
||||
}
|
||||
else {
|
||||
bounds.m_b = rect.bottom - GetSystemMetrics(SM_CYCAPTION) - sm_cysizeframe * 2;
|
||||
bounds.m_l = rect.left;
|
||||
bounds.m_r = rect.right - sm_cysizeframe * 2;
|
||||
bounds.m_t = rect.top;
|
||||
}
|
||||
}
|
||||
else {
|
||||
bounds.m_b = rect.bottom;
|
||||
bounds.m_l = rect.left;
|
||||
bounds.m_r = rect.right;
|
||||
bounds.m_t = rect.top;
|
||||
}
|
||||
coord.x = rect.left;
|
||||
coord.y = rect.top;
|
||||
::ClientToScreen(m_hWnd, &coord);
|
||||
|
||||
bounds.m_l = coord.x;
|
||||
bounds.m_t = coord.y;
|
||||
|
||||
coord.x = rect.right;
|
||||
coord.y = rect.bottom;
|
||||
::ClientToScreen(m_hWnd, &coord);
|
||||
|
||||
bounds.m_r = coord.x;
|
||||
bounds.m_b = coord.y;
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user