Module: wine Branch: master Commit: 94a87819c5266323f15c3fee461222bdf2d14762 URL: http://source.winehq.org/git/wine.git/?a=commit;h=94a87819c5266323f15c3fee46...
Author: Huw Davies huw@codeweavers.com Date: Mon Aug 22 08:58:29 2016 +0100
user32: Scale the check mark drawn with DrawFrameControl().
Based on a patch by Alexandre Julliard.
Signed-off-by: Huw Davies huw@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/user32/uitools.c | 40 +++++++++++++++++++++++++--------------- 1 file changed, 25 insertions(+), 15 deletions(-)
diff --git a/dlls/user32/uitools.c b/dlls/user32/uitools.c index c0a5629..73ec34b 100644 --- a/dlls/user32/uitools.c +++ b/dlls/user32/uitools.c @@ -717,7 +717,7 @@ static BOOL UITOOLS95_DFC_ButtonPush(HDC dc, LPRECT r, UINT uFlags)
static BOOL UITOOLS95_DFC_ButtonCheck(HDC dc, LPRECT r, UINT uFlags) { - RECT myr, bar; + RECT myr; UINT flags = BF_RECT | BF_ADJUST;
UITOOLS_MakeSquareRect(r, &myr); @@ -739,20 +739,30 @@ static BOOL UITOOLS95_DFC_ButtonCheck(HDC dc, LPRECT r, UINT uFlags)
if(uFlags & DFCS_CHECKED) { - int i, k; - i = (uFlags & DFCS_INACTIVE) || (uFlags & 0xff) == DFCS_BUTTON3STATE ? - COLOR_BTNSHADOW : COLOR_WINDOWTEXT; - - /* draw 7 bars, with h=3w to form the check */ - bar.left = myr.left; - bar.top = myr.top + 2; - for (k = 0; k < 7; k++) { - bar.left = bar.left + 1; - bar.top = (k < 3) ? bar.top + 1 : bar.top - 1; - bar.bottom = bar.top + 3; - bar.right = bar.left + 1; - FillRect(dc, &bar, GetSysColorBrush(i)); - } + POINT pt[6]; + HPEN old_pen; + HBRUSH old_brush; + int color = (uFlags & DFCS_INACTIVE) || (uFlags & 0xff) == DFCS_BUTTON3STATE ? + COLOR_BTNSHADOW : COLOR_WINDOWTEXT; + + pt[0].x = myr.right - 1; + pt[0].y = myr.top; + pt[1].x = pt[0].x; + pt[1].y = pt[0].y + (myr.bottom - myr.top) / 3; + pt[2].x = myr.left + (myr.right - myr.left) / 3; + pt[2].y = myr.bottom - 1; + pt[3].x = myr.left + 1; + pt[3].y = pt[2].y - (pt[2].x - pt[3].x); + pt[4].x = pt[3].x; + pt[4].y = pt[3].y - (myr.bottom - myr.top) / 3; + pt[5].x = pt[2].x; + pt[5].y = pt[2].y - (myr.bottom - myr.top) / 3; + + old_brush = SelectObject( dc, GetSysColorBrush( color ) ); + old_pen = SelectObject( dc, GetStockObject( NULL_PEN )); + Polygon( dc, pt, 6 ); + SelectObject( dc, old_brush ); + SelectObject( dc, old_pen ); } return TRUE; }