From 733254586bd6aee88f1ef1574524d2d1a5a06edb Mon Sep 17 00:00:00 2001 From: Pietro Gagliardi Date: Mon, 22 Dec 2014 21:28:17 -0500 Subject: [PATCH] Converted the checkbox code to actually use drawCheckbox(). --- wintable/new/checkboxes.h | 12 +++--------- wintable/new/draw.h | 15 ++++++++------- 2 files changed, 11 insertions(+), 16 deletions(-) diff --git a/wintable/new/checkboxes.h b/wintable/new/checkboxes.h index b7e8f0f..67bc745 100644 --- a/wintable/new/checkboxes.h +++ b/wintable/new/checkboxes.h @@ -87,19 +87,13 @@ static void getThemeCheckboxSize(HDC dc, int *width, int *height, HTHEME theme) *height = (int) size.cy; } -static void drawCheckbox(struct table *t, HDC dc, int x, int y, int cbState) +static void drawCheckbox(struct table *t, HDC dc, RECT *r, int cbState) { - RECT r; - - r.left = x; - r.top = y; - r.right = r.bottom + t->checkboxWidth; - r.bottom = r.top + t->checkboxHeight; if (t->theme != NULL) { - drawThemeCheckbox(dc, &r, cbState, t->theme); + drawThemeCheckbox(dc, r, cbState, t->theme); return; } - drawFrameControlCheckbox(dc, &r, cbState); + drawFrameControlCheckbox(dc, r, cbState); } static void freeCheckboxThemeData(struct table *t) diff --git a/wintable/new/draw.h b/wintable/new/draw.h index 314e2e3..dc19788 100644 --- a/wintable/new/draw.h +++ b/wintable/new/draw.h @@ -18,6 +18,7 @@ static void drawCell(struct table *t, HDC dc, struct drawCellParams *p) HBRUSH background; int textColor; POINT pt; + int cbState; // TODO verify these two background = (HBRUSH) (COLOR_WINDOW + 1); @@ -56,19 +57,19 @@ static void drawCell(struct table *t, HDC dc, struct drawCellParams *p) break; case tableColumnCheckbox: toCheckboxRect(t, &r, p->xoff); - SetDCBrushColor(dc, RGB(255, 0, 0)); + cbState = 0; if (p->row == lastCheckbox.row && p->column == lastCheckbox.column) - SetDCBrushColor(dc, RGB(216, 0, 216)); - if (t->checkboxMouseDown) { + cbState |= checkboxStateChecked; + if (t->checkboxMouseDown) if (p->row == t->checkboxMouseDownRow && p->column == t->checkboxMouseDownColumn) - SetDCBrushColor(dc, RGB(0, 0, 255)); - } else if (t->checkboxMouseOverLast) { // TODO else? + cbState |= checkboxStatePushed; + if (t->checkboxMouseOverLast) { pt.x = GET_X_LPARAM(t->checkboxMouseOverLastPoint); pt.y = GET_Y_LPARAM(t->checkboxMouseOverLastPoint); if (PtInRect(&r, pt) != 0) - SetDCBrushColor(dc, RGB(0, 255, 0)); + cbState |= checkboxStateHot; } - FillRect(dc, &r, GetStockObject(DC_BRUSH)); + drawCheckbox(t, dc, &r, cbState); break; } }