update for HEAD-2003050101
[reactos.git] / lib / user32 / windows / draw.c
index c9a9aa1..6713bbc 100644 (file)
@@ -117,7 +117,6 @@ static const signed char LTRBInnerFlat[] = {
     -1, COLOR_BTNFACE,     COLOR_BTNFACE,     COLOR_BTNFACE,
     -1, COLOR_BTNFACE,     COLOR_BTNFACE,     COLOR_BTNFACE,
 };
-
 /* FUNCTIONS *****************************************************************/
 
 
@@ -450,7 +449,6 @@ static BOOL UITOOLS95_DrawRectEdge(HDC hdc, LPRECT rc,
     BOOL retval = !(   ((uType & BDR_INNER) == BDR_INNER
                        || (uType & BDR_OUTER) == BDR_OUTER)
                       && !(uFlags & (BF_FLAT|BF_MONO)) );
-
     /* Init some vars */
     LTInnerPen = LTOuterPen = RBInnerPen = RBOuterPen = (HPEN)GetStockObject(NULL_PEN);
     SavePen = (HPEN)SelectObject(hdc, LTInnerPen);
@@ -473,8 +471,8 @@ static BOOL UITOOLS95_DrawRectEdge(HDC hdc, LPRECT rc,
         * otherwise.
         *                                          Dennis Björklund, 10 June, 99
         */
-/*     if( TWEAK_WineLook == WIN98_LOOK && LTInnerI != -1 )
-            LTInnerI = RBInnerI = COLOR_BTNFACE; */
+/*     if( TWEAK_WineLook == WIN98_LOOK && LTInnerI != -1 ) */
+            LTInnerI = RBInnerI = COLOR_BTNFACE;
     }
     else if(uFlags & BF_SOFT)
     {
@@ -500,7 +498,11 @@ static BOOL UITOOLS95_DrawRectEdge(HDC hdc, LPRECT rc,
     if(LTOuterI != -1) LTOuterPen = GetSysColorPen(LTOuterI);
     if(RBInnerI != -1) RBInnerPen = GetSysColorPen(RBInnerI);
     if(RBOuterI != -1) RBOuterPen = GetSysColorPen(RBOuterI);
-
+    if((uFlags & BF_MIDDLE) && retval)
+       {
+            FillRect(hdc, &InnerRect, GetSysColorBrush(uFlags & BF_MONO ?
+                         COLOR_WINDOW : COLOR_BTNFACE));
+       }
     MoveToEx(hdc, 0, 0, &SavePoint);
 
     /* Draw the outer edge */
@@ -518,13 +520,13 @@ static BOOL UITOOLS95_DrawRectEdge(HDC hdc, LPRECT rc,
     SelectObject(hdc, RBOuterPen);
     if(uFlags & BF_BOTTOM)
     {
-        MoveToEx(hdc, InnerRect.right-1, InnerRect.bottom-1, NULL);
-        LineTo(hdc, InnerRect.left-1, InnerRect.bottom-1);
+        MoveToEx(hdc, InnerRect.right, InnerRect.bottom-1, NULL);
+        LineTo(hdc, InnerRect.left, InnerRect.bottom-1);
     }
     if(uFlags & BF_RIGHT)
     {
-        MoveToEx(hdc, InnerRect.right-1, InnerRect.bottom-1, NULL);
-        LineTo(hdc, InnerRect.right-1, InnerRect.top-1);
+        MoveToEx(hdc, InnerRect.right-1, InnerRect.bottom, NULL);
+        LineTo(hdc, InnerRect.right-1, InnerRect.top);
     }
 
     /* Draw the inner edge */
@@ -542,13 +544,13 @@ static BOOL UITOOLS95_DrawRectEdge(HDC hdc, LPRECT rc,
     SelectObject(hdc, RBInnerPen);
     if(uFlags & BF_BOTTOM)
     {
-        MoveToEx(hdc, InnerRect.right-1-RBpenplus, InnerRect.bottom-2, NULL);
-        LineTo(hdc, InnerRect.left-1+LBpenplus, InnerRect.bottom-2);
+        MoveToEx(hdc, InnerRect.right-RBpenplus, InnerRect.bottom-2, NULL);
+        LineTo(hdc, InnerRect.left+LBpenplus, InnerRect.bottom-2);
     }
     if(uFlags & BF_RIGHT)
     {
-        MoveToEx(hdc, InnerRect.right-2, InnerRect.bottom-1-RBpenplus, NULL);
-        LineTo(hdc, InnerRect.right-2, InnerRect.top-1+RTpenplus);
+        MoveToEx(hdc, InnerRect.right-2, InnerRect.bottom-RBpenplus, NULL);
+        LineTo(hdc, InnerRect.right-2, InnerRect.top+RTpenplus);
     }
 
     if( ((uFlags & BF_MIDDLE) && retval) || (uFlags & BF_ADJUST) )
@@ -561,12 +563,6 @@ static BOOL UITOOLS95_DrawRectEdge(HDC hdc, LPRECT rc,
         if(uFlags & BF_TOP)    InnerRect.top    += add;
         if(uFlags & BF_BOTTOM) InnerRect.bottom -= add;
 
-        if((uFlags & BF_MIDDLE) && retval)
-       {
-            FillRect(hdc, &InnerRect, GetSysColorBrush(uFlags & BF_MONO ?
-                         COLOR_WINDOW : COLOR_BTNFACE));
-       }
-
        if(uFlags & BF_ADJUST)
            *rc = InnerRect;
     }
@@ -894,7 +890,12 @@ static BOOL UITOOLS95_DrawFrameCaption(HDC dc, LPRECT r, UINT uFlags)
     COLORREF clrsave;
     SIZE size;
 
-    UITOOLS95_DFC_ButtonPush(dc, r, uFlags & 0xff00);
+    //UITOOLS95_DFC_ButtonPush(dc, r, uFlags & 0xff00);
+    if(uFlags & DFCS_PUSHED)
+      UITOOLS95_DrawRectEdge(dc,r,EDGE_SUNKEN, BF_RECT | BF_MIDDLE | BF_SOFT);
+    else
+      UITOOLS95_DrawRectEdge(dc,r,BDR_RAISEDINNER | BDR_RAISEDOUTER, BF_RECT |
+                               BF_SOFT | BF_MIDDLE);
 
     switch(uFlags & 0xff)
     {
@@ -937,7 +938,6 @@ static BOOL UITOOLS95_DrawFrameCaption(HDC dc, LPRECT r, UINT uFlags)
                        start.y++;
         }
 
-        /* now use the width of each line */
         width -= numLines - 1;
 
         for (i = 0; i < numLines; i++)
@@ -945,11 +945,12 @@ static BOOL UITOOLS95_DrawFrameCaption(HDC dc, LPRECT r, UINT uFlags)
             MoveToEx(dc, start.x + i, start.y, &oldPos);
             LineTo(dc, start.x + i + width, start.y + height);
 
-            MoveToEx(dc, start.x + i, start.y + height - 1, &oldPos);
-            LineTo(dc, start.x + i + width, start.y - 1);
+            MoveToEx(dc, start.x + i, start.y + height, &oldPos);
+            LineTo(dc, start.x + i + width, start.y);
         }
 
         SelectObject(dc, hpsave);
+        
         return TRUE;
     }
 
@@ -1041,10 +1042,8 @@ static BOOL UITOOLS95_DrawFrameCaption(HDC dc, LPRECT r, UINT uFlags)
         return FALSE;
     }
 
-    /* Here the drawing takes place */
     if(uFlags & DFCS_INACTIVE)
     {
-        /* If we have an inactive button, then you see a shadow */
         hbsave = (HBRUSH)SelectObject(dc, GetSysColorBrush(COLOR_BTNHIGHLIGHT));
         hpsave = (HPEN)SelectObject(dc, GetSysColorPen(COLOR_BTNHIGHLIGHT));
         Polygon(dc, Line1, Line1N);
@@ -1054,7 +1053,6 @@ static BOOL UITOOLS95_DrawFrameCaption(HDC dc, LPRECT r, UINT uFlags)
         SelectObject(dc, hbsave);
     }
 
-    /* Correct for the shadow shift */
     if (!(uFlags & DFCS_PUSHED))
     {
         for(i = 0; i < Line1N; i++)
@@ -1069,7 +1067,6 @@ static BOOL UITOOLS95_DrawFrameCaption(HDC dc, LPRECT r, UINT uFlags)
         }
     }
 
-    /* Make the final picture */
     hbsave = (HBRUSH)SelectObject(dc, GetSysColorBrush(colorIdx));
     hpsave = (HPEN)SelectObject(dc, GetSysColorPen(colorIdx));
 
@@ -1332,10 +1329,10 @@ static BOOL UITOOLS95_DrawFrameMenu(HDC dc, LPRECT r, UINT uFlags)
 BOOL WINAPI DrawFrameControl( HDC hdc, LPRECT rc, UINT uType,
                                   UINT uState )
 {
-    /* Win95 doesn't support drawing in other mapping modes */
+   /* Win95 doesn't support drawing in other mapping modes
     if(GetMapMode(hdc) != MM_TEXT)
         return FALSE;
-
+    */
     switch(uType)
     {
     case DFC_BUTTON:
@@ -1344,20 +1341,20 @@ BOOL WINAPI DrawFrameControl( HDC hdc, LPRECT rc, UINT uType,
       return UITOOLS95_DrawFrameCaption(hdc, rc, uState);
     case DFC_MENU:
       return UITOOLS95_DrawFrameMenu(hdc, rc, uState);
+    /*
+    case DFC_POPUPMENU:
+      break;
+    */
     case DFC_SCROLL:
       return UITOOLS95_DrawFrameScroll(hdc, rc, uState);
     default:
-      DbgPrint("(%x,%p,%d,%x), bad type!\n", hdc,rc,uType,uState );
+      DbgPrint("(%p,%p,%d,%x), bad type!\n", hdc,rc,uType,uState );
     }
     return FALSE;
 }
-
 /* Ported from WINE20020904 */
 BOOL WINAPI DrawEdge( HDC hdc, LPRECT rc, UINT edge, UINT flags )
 {
-    DbgPrint("%04x %d,%d-%d,%d %04x %04x\n",
-             hdc, rc->left, rc->top, rc->right, rc->bottom, edge, flags );
-
     if(flags & BF_DIAGONAL)
       return UITOOLS95_DrawDiagEdge(hdc, rc, edge, flags);
     else