summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPietro Gagliardi <[email protected]>2014-12-22 21:28:17 -0500
committerPietro Gagliardi <[email protected]>2014-12-22 21:28:17 -0500
commit733254586bd6aee88f1ef1574524d2d1a5a06edb (patch)
treed647d2e602fa046bb600c747ef9b0906a8ff977c
parentd28b05c5b77debafd8dc410be0eebf28d50aba6b (diff)
Converted the checkbox code to actually use drawCheckbox().
-rw-r--r--wintable/new/checkboxes.h12
-rw-r--r--wintable/new/draw.h15
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;
}
}