diff --git a/include/gwin/checkbox.h b/include/gwin/checkbox.h index a5f1e136..c0d8e90f 100644 --- a/include/gwin/checkbox.h +++ b/include/gwin/checkbox.h @@ -104,6 +104,17 @@ void gwinCheckboxDraw(GHandle gh); */ void gwinCheckboxSetEnabled(GHandle gh, bool_t enabled); +/** + * @brief Set the callback routine to perform a custom drawing. + * + * @param[in] gh The window handle (must be a checkbox window) + * @param[in] fn The function to use to draw the checkbox + * @param[in] param A parameter to pass to the checkbox drawing function + * + * @api + */ +void gwinCheckboxSetCustom(GHandle gh, GCheckboxDrawFunction fn, void *param); + /** * @brief Enable a checkbox * diff --git a/src/gwin/checkbox.c b/src/gwin/checkbox.c index df97a38d..0cc75622 100644 --- a/src/gwin/checkbox.c +++ b/src/gwin/checkbox.c @@ -122,6 +122,19 @@ GHandle gwinCheckboxCreate(GCheckboxObject *gb, coord_t x, coord_t y, coord_t wi return (GHandle)gb; } +void gwinCheckboxSetCustom(GHandle gh, GCheckboxDrawFunction fn, void *param) { + #define gcw ((GCheckboxObject *)gh) + + if (gh->type != GW_CHECKBOX) + return; + + gcw->fn = fn; + gcw->param = param; + + #undef gcw +} + + void gwinCheckboxSetEnabled(GHandle gh, bool_t enabled) { if (gh->type != GW_CHECKBOX) return; @@ -136,7 +149,7 @@ void gwinCheckboxDraw(GHandle gh) { return; #if GDISP_NEED_CLIP - gdispSetClip(gh->x, gh->y, gh->width, gh->height); + //gdispSetClip(gh->x, gh->y, gh->width, gh->height); #endif gcw->fn(gh,