Mikołaj Zalewski : comctl32: rebar: Don' t return rectangles with negative width or height in NCCalcSize.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Oct 16 13:59:28 CDT 2006


Module: wine
Branch: master
Commit: 1b8c98d35da8894faaa33146db7e184fa110674b
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=1b8c98d35da8894faaa33146db7e184fa110674b

Author: Mikołaj Zalewski <mikolaj at zalewski.pl>
Date:   Mon Oct 16 17:39:55 2006 +0200

comctl32: rebar: Don't return rectangles with negative width or height in NCCalcSize.

---

 dlls/comctl32/rebar.c |   14 ++++++++------
 1 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/dlls/comctl32/rebar.c b/dlls/comctl32/rebar.c
index c627a3e..d2c8b94 100644
--- a/dlls/comctl32/rebar.c
+++ b/dlls/comctl32/rebar.c
@@ -4114,17 +4114,19 @@ inline static LRESULT
 REBAR_NCCalcSize (REBAR_INFO *infoPtr, WPARAM wParam, LPARAM lParam)
 {
     HTHEME theme;
+    RECT *rect = (RECT *)lParam;
+
     if (infoPtr->dwStyle & WS_BORDER) {
-	InflateRect((LPRECT)lParam, -GetSystemMetrics(SM_CXEDGE),
-		    -GetSystemMetrics(SM_CYEDGE));
+        rect->left   = min(rect->left + GetSystemMetrics(SM_CXEDGE), rect->right);
+        rect->right  = max(rect->right - GetSystemMetrics(SM_CXEDGE), rect->left);
+        rect->top    = min(rect->top + GetSystemMetrics(SM_CXEDGE), rect->bottom);
+        rect->bottom = max(rect->bottom - GetSystemMetrics(SM_CXEDGE), rect->top);
     }
     else if ((theme = GetWindowTheme (infoPtr->hwndSelf)))
     {
-        ((LPRECT)lParam)->top++;
+        rect->top = min(rect->top + 1, rect->bottom);
     }
-    TRACE("new client=(%d,%d)-(%d,%d)\n",
-	  ((LPRECT)lParam)->left, ((LPRECT)lParam)->top,
-	  ((LPRECT)lParam)->right, ((LPRECT)lParam)->bottom);
+    TRACE("new client=(%d,%d)-(%d,%d)\n", rect->left, rect->top, rect->right, rect->bottom);
     return 0;
 }
 




More information about the wine-cvs mailing list