Modified files: windows : rect.c loader : win.c Log message: Codeweavers Don't fill in nonexistent rectangles. Small fix to coordinate fix. Focus fix in enable window.
Index: windows/rect.c =================================================================== RCS file: /home/wine/wine/windows/rect.c,v retrieving revision 1.12 diff -u -r1.12 rect.c --- windows/rect.c 2000/12/22 01:38:02 1.12 +++ windows/rect.c 2002/01/27 01:03:04 @@ -29,6 +29,7 @@ BOOL WINAPI SetRect( LPRECT rect, INT left, INT top, INT right, INT bottom ) { + if (!rect) return FALSE; rect->left = left; rect->right = right; rect->top = top; @@ -51,6 +52,7 @@ */ BOOL WINAPI SetRectEmpty( LPRECT rect ) { + if (!rect) return FALSE; rect->left = rect->right = rect->top = rect->bottom = 0; return TRUE; } @@ -96,6 +98,7 @@ */ BOOL WINAPI IsRectEmpty( const RECT *rect ) { + if (!rect) return TRUE; return ((rect->left >= rect->right) || (rect->top >= rect->bottom)); } @@ -115,6 +118,7 @@ */ BOOL WINAPI PtInRect( const RECT *rect, POINT pt ) { + if (!rect) return FALSE; return ((pt.x >= rect->left) && (pt.x < rect->right) && (pt.y >= rect->top) && (pt.y < rect->bottom)); } @@ -137,6 +141,7 @@ */ BOOL WINAPI OffsetRect( LPRECT rect, INT x, INT y ) { + if (!rect) return FALSE; rect->left += x; rect->right += x; rect->top += y; @@ -162,6 +167,7 @@ */ BOOL WINAPI InflateRect( LPRECT rect, INT x, INT y ) { + if (!rect) return FALSE; rect->left -= x; rect->top -= y; rect->right += x; @@ -197,6 +203,7 @@ BOOL WINAPI IntersectRect( LPRECT dest, const RECT *src1, const RECT *src2 ) { + if (!dest || !src1 || !src2) return FALSE; if (IsRectEmpty(src1) || IsRectEmpty(src2) || (src1->left >= src2->right) || (src2->left >= src1->right) || (src1->top >= src2->bottom) || (src2->top >= src1->bottom)) @@ -248,6 +255,7 @@ BOOL WINAPI UnionRect( LPRECT dest, const RECT *src1, const RECT *src2 ) { + if (!dest) return FALSE; if (IsRectEmpty(src1)) { if (IsRectEmpty(src2)) @@ -287,6 +295,7 @@ */ BOOL WINAPI EqualRect( const RECT* rect1, const RECT* rect2 ) { + if (!rect1 || !rect2) return FALSE; return ((rect1->left == rect2->left) && (rect1->right == rect2->right) && (rect1->top == rect2->top) && (rect1->bottom == rect2->bottom)); } @@ -336,6 +345,7 @@ { RECT tmp; + if (!dest) return FALSE; if (IsRectEmpty( src1 )) { SetRectEmpty( dest ); Index: windows/win.c =================================================================== RCS file: /home/wine/wine/windows/win.c,v retrieving revision 1.176 diff -u -r1.176 win.c --- windows/win.c 2002/01/22 00:50:07 1.176 +++ windows/win.c 2002/01/27 01:03:08 @@ -848,6 +848,19 @@ } } } + else + { + /* neither x nor cx are default. Check the y values . + * In the trace we see Outlook using cy set to CW_USEDEFAULT + * when opening the address book. + */ + if (cs->cy == CW_USEDEFAULT || cs->cy == CW_USEDEFAULT16) { + RECT r; + FIXME("Strange use of CW_USEDEFAULT in nHeight\n"); + SystemParametersInfoA( SPI_GETWORKAREA, 0, &r, 0); + cs->cy = (((r.bottom - r.top) * 3) / 4) - cs->y; + } + } } /*********************************************************************** @@ -1667,6 +1680,11 @@ { WIN_SetStyle( hwnd, style & ~WS_DISABLED ); SendMessageA( hwnd, WM_ENABLE, TRUE, 0 ); + /* GLA */ + if ((style & WS_VISIBLE) && !(style & WS_CHILD) && + (GetFocus() == 0)) { + SetFocus( hwnd ); + } } else if (!enable && !retvalue) {