2002/07/19 05:28:11
authormegacz <megacz@xwt.org>
Fri, 30 Jan 2004 06:49:18 +0000 (06:49 +0000)
committermegacz <megacz@xwt.org>
Fri, 30 Jan 2004 06:49:18 +0000 (06:49 +0000)
darcs-hash:20040130064918-2ba56-a042b554b7fed02c9b83a9734d02b494710c5934.gz

CHANGES
src/org/xwt/plat/Win32.cc

diff --git a/CHANGES b/CHANGES
index 2002f14..770c66e 100644 (file)
--- a/CHANGES
+++ b/CHANGES
 
 18-Jul megacz POSIX.cc: better capslock handling
 
+18-Jul megacz Win32.cc: fixed MINMAXINFO bug
+
index 28023a1..851bc4a 100644 (file)
@@ -636,9 +636,9 @@ void org::xwt::plat::Win32$Win32Surface::setSize(jint w, jint h) {
     RECT client_rect, window_rect;
     GetClientRect((HWND)hwnd, &client_rect);
     GetWindowRect((HWND)hwnd, &window_rect);
-    int addwidth = (window_rect.right - window_rect.left) - (client_rect.right - client_rect.left);
-    int addheight = (window_rect.bottom - window_rect.top) - (client_rect.bottom - client_rect.top);
-    SetWindowPos((HWND)hwnd, NULL, 0, 0, w + addwidth, h + addheight, SWP_NOZORDER | SWP_NOMOVE);
+    int width = (window_rect.right - window_rect.left) - (client_rect.right - client_rect.left) + w;
+    int height = (window_rect.bottom - window_rect.top) - (client_rect.bottom - client_rect.top) + h;
+    SetWindowPos((HWND)hwnd, NULL, 0, 0, width, height, SWP_NOZORDER | SWP_NOMOVE);
 }
 
 void org::xwt::plat::Win32$Win32Surface::setTitleBarText(java::lang::String* title) {
@@ -695,9 +695,11 @@ jint org::xwt::plat::Win32$Win32Surface::WndProc(jint _hwnd, jint _iMsg, jint _w
     POINT point;
     HWND hwnd2;
     RECT rect, rect2;
+    RECT client_rect, window_rect;
     jboolean newinside;
     int16_t mouse_x;
     int16_t mouse_y;
+    int addwidth, addheight;
 
     switch(iMsg) {
     case WM_DEVMODECHANGE: break;    // FEATURE: color depth changed
@@ -804,11 +806,15 @@ jint org::xwt::plat::Win32$Win32Surface::WndProc(jint _hwnd, jint _iMsg, jint _w
         return 0;
 
     case WM_GETMINMAXINFO:
+        GetClientRect((HWND)hwnd, &client_rect);
+        GetWindowRect((HWND)hwnd, &window_rect);
+        addwidth = (window_rect.right - window_rect.left) - (client_rect.right - client_rect.left);
+        addheight = (window_rect.bottom - window_rect.top) - (client_rect.bottom - client_rect.top);
         mmi = (MINMAXINFO*)lParam;
-        mmi->ptMinTrackSize.x = root->dmin(0);
-        mmi->ptMinTrackSize.y = root->dmin(1);
-        mmi->ptMaxTrackSize.x = root->dmax(0);
-        mmi->ptMaxTrackSize.y = root->dmax(1);
+        mmi->ptMinTrackSize.x = ((uint32_t)root->dmin(0)) + addwidth;
+        mmi->ptMinTrackSize.y = ((uint32_t)root->dmin(1)) + addheight;
+        mmi->ptMaxTrackSize.x = min(org::xwt::plat::Win32::getScreenWidth(), ((uint32_t)root->dmax(0)) + addwidth);
+        mmi->ptMaxTrackSize.y = min(org::xwt::plat::Win32::getScreenHeight(), ((uint32_t)root->dmax(1)) + addheight);
         return 0;
         
     case WM_PAINT: