Converted the checkbox code to actually use drawCheckbox().

This commit is contained in:
Pietro Gagliardi 2014-12-22 21:28:17 -05:00
parent d28b05c5b7
commit 733254586b
2 changed files with 11 additions and 16 deletions

View File

@ -87,19 +87,13 @@ static void getThemeCheckboxSize(HDC dc, int *width, int *height, HTHEME theme)
*height = (int) size.cy; *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) { if (t->theme != NULL) {
drawThemeCheckbox(dc, &r, cbState, t->theme); drawThemeCheckbox(dc, r, cbState, t->theme);
return; return;
} }
drawFrameControlCheckbox(dc, &r, cbState); drawFrameControlCheckbox(dc, r, cbState);
} }
static void freeCheckboxThemeData(struct table *t) static void freeCheckboxThemeData(struct table *t)

View File

@ -18,6 +18,7 @@ static void drawCell(struct table *t, HDC dc, struct drawCellParams *p)
HBRUSH background; HBRUSH background;
int textColor; int textColor;
POINT pt; POINT pt;
int cbState;
// TODO verify these two // TODO verify these two
background = (HBRUSH) (COLOR_WINDOW + 1); background = (HBRUSH) (COLOR_WINDOW + 1);
@ -56,19 +57,19 @@ static void drawCell(struct table *t, HDC dc, struct drawCellParams *p)
break; break;
case tableColumnCheckbox: case tableColumnCheckbox:
toCheckboxRect(t, &r, p->xoff); toCheckboxRect(t, &r, p->xoff);
SetDCBrushColor(dc, RGB(255, 0, 0)); cbState = 0;
if (p->row == lastCheckbox.row && p->column == lastCheckbox.column) if (p->row == lastCheckbox.row && p->column == lastCheckbox.column)
SetDCBrushColor(dc, RGB(216, 0, 216)); cbState |= checkboxStateChecked;
if (t->checkboxMouseDown) { if (t->checkboxMouseDown)
if (p->row == t->checkboxMouseDownRow && p->column == t->checkboxMouseDownColumn) if (p->row == t->checkboxMouseDownRow && p->column == t->checkboxMouseDownColumn)
SetDCBrushColor(dc, RGB(0, 0, 255)); cbState |= checkboxStatePushed;
} else if (t->checkboxMouseOverLast) { // TODO else? if (t->checkboxMouseOverLast) {
pt.x = GET_X_LPARAM(t->checkboxMouseOverLastPoint); pt.x = GET_X_LPARAM(t->checkboxMouseOverLastPoint);
pt.y = GET_Y_LPARAM(t->checkboxMouseOverLastPoint); pt.y = GET_Y_LPARAM(t->checkboxMouseOverLastPoint);
if (PtInRect(&r, pt) != 0) 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; break;
} }
} }