summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPietro Gagliardi <[email protected]>2014-11-14 22:41:25 -0500
committerPietro Gagliardi <[email protected]>2014-11-14 22:41:25 -0500
commitf11b1141fbda7b236982b1ecfad160c80736b07b (patch)
treedb6a0058762ec50976afde5e4195c4ec99ab5512
parentee1309313636576131e44fa55986bce75f0098a3 (diff)
Stored the checkbox width/height in the new Windows Table. This will be needed for hit-testing checkboxes.
-rw-r--r--wintable/imagelist_windows.c9
-rw-r--r--wintable/main.c8
2 files changed, 9 insertions, 8 deletions
diff --git a/wintable/imagelist_windows.c b/wintable/imagelist_windows.c
index c97fc0f..2527d16 100644
--- a/wintable/imagelist_windows.c
+++ b/wintable/imagelist_windows.c
@@ -148,9 +148,8 @@ static HBITMAP makeCheckboxImageListEntry(HDC dc, int width, int height, int cbS
return bitmap;
}
-static HIMAGELIST newCheckboxImageList(HWND hwnddc, void (*sizefunc)(HDC, int *, int *, HTHEME), void (*drawfunc)(HDC, RECT *, int, HTHEME), HTHEME theme)
+static HIMAGELIST newCheckboxImageList(HWND hwnddc, void (*sizefunc)(HDC, int *, int *, HTHEME), void (*drawfunc)(HDC, RECT *, int, HTHEME), HTHEME theme, int *width, int *height)
{
- int width, height;
int cbState;
HDC dc;
HIMAGELIST il;
@@ -176,7 +175,7 @@ static HIMAGELIST newCheckboxImageList(HWND hwnddc, void (*sizefunc)(HDC, int *,
return il;
}
-HIMAGELIST makeCheckboxImageList(HWND hwnddc, HTHEME *theme)
+HIMAGELIST makeCheckboxImageList(HWND hwnddc, HTHEME *theme, int *width, int *height)
{
if (*theme != NULL) {
HRESULT res;
@@ -190,7 +189,7 @@ HIMAGELIST makeCheckboxImageList(HWND hwnddc, HTHEME *theme)
if (*theme == NULL) // try to open the theme
*theme = OpenThemeData(hwnddc, L"button");
if (*theme != NULL) // use the theme
- return newCheckboxImageList(hwnddc, themeSize, themeImage, *theme);
+ return newCheckboxImageList(hwnddc, themeSize, themeImage, *theme, width, height);
// couldn't open; fall back
- return newCheckboxImageList(hwnddc, dfcSize, dfcImage, *theme);
+ return newCheckboxImageList(hwnddc, dfcSize, dfcImage, *theme, width, height);
}
diff --git a/wintable/main.c b/wintable/main.c
index 86d8ada..edea173 100644
--- a/wintable/main.c
+++ b/wintable/main.c
@@ -16,7 +16,7 @@
#include <uxtheme.h>
#include <string.h>
#include <wchar.h>
-extern HIMAGELIST makeCheckboxImageList(HWND hwnddc, HTHEME *theme);
+extern HIMAGELIST makeCheckboxImageList(HWND hwnddc, HTHEME *theme, int *, int *);
enum {
checkboxStateChecked = 1 << 0,
checkboxStateHot = 1 << 1,
@@ -81,6 +81,8 @@ struct table {
HTHEME theme;
int *columnTypes;
intptr_t focusedColumn;
+ int checkboxWidth;
+ int checkboxHeight;
};
static LONG rowHeight(struct table *t)
@@ -684,7 +686,7 @@ if (ImageList_AddIcon(t->imagelist, icon) == -1)abort();
if (ImageList_GetIconSize(t->imagelist, &unused, &(t->imagelistHeight)) == 0)abort();
}
}
- t->checkboxes = makeCheckboxImageList(t->hwnd, &(t->theme));
+ t->checkboxes = makeCheckboxImageList(t->hwnd, &(t->theme), &(t->checkboxWidth), &(t->checkboxHeight));
t->focusedColumn = -1;
SetWindowLongPtrW(hwnd, GWLP_USERDATA, (LONG_PTR) t);
}
@@ -758,7 +760,7 @@ if (ImageList_GetIconSize(t->imagelist, &unused, &(t->imagelistHeight)) == 0)abo
case WM_THEMECHANGED:
if (ImageList_Destroy(t->checkboxes) == 0)
abort();
- t->checkboxes = makeCheckboxImageList(t->hwnd, &(t->theme));
+ t->checkboxes = makeCheckboxImageList(t->hwnd, &(t->theme), &(t->checkboxWidth), &(t->checkboxHeight));
resize(t); // TODO needed?
redrawAll(t);
// now defer back to DefWindowProc() in case other things are needed