From 7ba2a371d362b6a16b88a87b6baf252ab310fc6f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Maxime=20Belleng=C3=A9?= Date: Wed, 30 Apr 2003 23:57:43 +0000 Subject: [PATCH] - Fix some indentation problems. - Handle correctly the alignement of the checkboxes if the BS_TOP/BS_BOTTOM flags are set. --- controls/button.c | 95 +++++++++++++++++++++++++++++++++---------------------- 1 file changed, 57 insertions(+), 38 deletions(-) diff --git a/controls/button.c b/controls/button.c index d4fac467e5b..a38445b5936 100644 --- a/controls/button.c +++ b/controls/button.c @@ -862,6 +862,12 @@ static void CB_Paint( HWND hwnd, HDC hDC, UINT action ) rbox.right = checkBoxWidth; } + /* Draw label */ + client = rtext; + dtFlags = BUTTON_CalcLabelRect(hwnd, hDC, &rtext); + + rbox.top = rtext.top; + rbox.bottom = rtext.bottom; /* Draw the check-box bitmap */ if (action == ODA_DRAWENTIRE || action == ODA_SELECT) { @@ -871,29 +877,29 @@ static void CB_Paint( HWND hwnd, HDC hDC, UINT action ) if( TWEAK_WineLook == WIN31_LOOK ) { - HDC hMemDC = CreateCompatibleDC( hDC ); - int x = 0, y = 0; - delta = (rbox.bottom - rbox.top - checkBoxHeight) / 2; - - /* Check in case the client area is smaller than the checkbox bitmap */ - if (delta < 0) delta = 0; - - if (state & BUTTON_HIGHLIGHTED) x += 2 * checkBoxWidth; - if (state & (BUTTON_CHECKED | BUTTON_3STATE)) x += checkBoxWidth; - if ((get_button_type(style) == BS_RADIOBUTTON) || - (get_button_type(style) == BS_AUTORADIOBUTTON)) y += checkBoxHeight; - else if (state & BUTTON_3STATE) y += 2 * checkBoxHeight; - - /* The bitmap for the radio button is not aligned with the - * left of the window, it is 1 pixel off. */ - if ((get_button_type(style) == BS_RADIOBUTTON) || - (get_button_type(style) == BS_AUTORADIOBUTTON)) - rbox.left += 1; - - SelectObject( hMemDC, hbitmapCheckBoxes ); - BitBlt( hDC, rbox.left, rbox.top + delta, checkBoxWidth, - checkBoxHeight, hMemDC, x, y, SRCCOPY ); - DeleteDC( hMemDC ); + HDC hMemDC = CreateCompatibleDC( hDC ); + int x = 0, y = 0; + delta = (rbox.bottom - rbox.top - checkBoxHeight) / 2; + + /* Check in case the client area is smaller than the checkbox bitmap */ + if (delta < 0) delta = 0; + + if (state & BUTTON_HIGHLIGHTED) x += 2 * checkBoxWidth; + if (state & (BUTTON_CHECKED | BUTTON_3STATE)) x += checkBoxWidth; + if ((get_button_type(style) == BS_RADIOBUTTON) || + (get_button_type(style) == BS_AUTORADIOBUTTON)) y += checkBoxHeight; + else if (state & BUTTON_3STATE) y += 2 * checkBoxHeight; + + /* The bitmap for the radio button is not aligned with the + * left of the window, it is 1 pixel off. */ + if ((get_button_type(style) == BS_RADIOBUTTON) || + (get_button_type(style) == BS_AUTORADIOBUTTON)) + rbox.left += 1; + + SelectObject( hMemDC, hbitmapCheckBoxes ); + BitBlt( hDC, rbox.left, rbox.top + delta, checkBoxWidth, + checkBoxHeight, hMemDC, x, y, SRCCOPY ); + DeleteDC( hMemDC ); } else { @@ -910,28 +916,41 @@ static void CB_Paint( HWND hwnd, HDC hDC, UINT action ) if (style & WS_DISABLED) flags |= DFCS_INACTIVE; /* rbox must have the correct height */ - delta = rbox.bottom - rbox.top - checkBoxHeight; - if (delta > 0) - { - int ofs = (abs(delta) / 2); - rbox.bottom -= ofs + 1; - rbox.top = rbox.bottom - checkBoxHeight; - } - else if (delta < 0) - { - int ofs = (abs(delta) / 2); - rbox.top -= ofs + 1; + delta = rbox.bottom - rbox.top - checkBoxHeight; + + if (style & BS_TOP) { + if (delta > 0) { rbox.bottom = rbox.top + checkBoxHeight; + } else { + rbox.top -= -delta/2 + 1; + rbox.bottom += rbox.top + checkBoxHeight; + } + } else if (style & BS_BOTTOM) { + if (delta > 0) { + rbox.top = rbox.bottom - checkBoxHeight; + } else { + rbox.bottom += -delta/2 + 1; + rbox.top = rbox.bottom -= checkBoxHeight; + } + } else { /* Default */ + if (delta > 0) + { + int ofs = (delta / 2); + rbox.bottom -= ofs + 1; + rbox.top = rbox.bottom - checkBoxHeight; + } + else if (delta < 0) + { + int ofs = (-delta / 2); + rbox.top -= ofs + 1; + rbox.bottom = rbox.top + checkBoxHeight; + } } DrawFrameControl( hDC, &rbox, DFC_BUTTON, flags ); } } - /* Draw label */ - client = rtext; - dtFlags = BUTTON_CalcLabelRect(hwnd, hDC, &rtext); - if (dtFlags == (UINT)-1L) /* Noting to draw */ return; hRgn = CreateRectRgn(client.left, client.top, client.right, client.bottom); -- 2.11.4.GIT