Fix for windows size on win32
authorAlexander Kuznetsov <kuzsasha@gmail.com>
Fri, 22 Feb 2013 15:57:50 +0000 (15:57 +0000)
committerAlexander Kuznetsov <kuzsasha@gmail.com>
Fri, 22 Feb 2013 15:57:50 +0000 (15:57 +0000)
intern/ghost/intern/GHOST_WindowWin32.cpp

index 89fece5..7566e7f 100644 (file)
@@ -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;
 }