diff options
author | Alexander Kuznetsov <kuzsasha@gmail.com> | 2013-02-22 19:57:50 +0400 |
---|---|---|
committer | Alexander Kuznetsov <kuzsasha@gmail.com> | 2013-02-22 19:57:50 +0400 |
commit | 7ae17e9ed4748e2f11abc044e2616f3d3bf03e99 (patch) | |
tree | 3313bcf0a366a8eea9cf9bf6545f54bf81bac76d /intern/ghost/intern/GHOST_WindowWin32.cpp | |
parent | 2c2a42a4e8f691f0f407dc709e20c7257c960aaa (diff) |
Fix for windows size on win32
Diffstat (limited to 'intern/ghost/intern/GHOST_WindowWin32.cpp')
-rw-r--r-- | intern/ghost/intern/GHOST_WindowWin32.cpp | 46 |
1 files changed, 15 insertions, 31 deletions
diff --git a/intern/ghost/intern/GHOST_WindowWin32.cpp b/intern/ghost/intern/GHOST_WindowWin32.cpp index 89fece50caa..7566e7fe71c 100644 --- a/intern/ghost/intern/GHOST_WindowWin32.cpp +++ b/intern/ghost/intern/GHOST_WindowWin32.cpp @@ -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; } |