From 0628250631acbfd008483e28c056d183302808c1 Mon Sep 17 00:00:00 2001 From: IoIxD Date: Wed, 13 May 2026 00:37:22 -0700 Subject: [PATCH] draw func for label should be set per widget oops --- include/Mw/TypeDefs.h | 1 + src/widget/label.c | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/include/Mw/TypeDefs.h b/include/Mw/TypeDefs.h index 1e06371..6d1776a 100644 --- a/include/Mw/TypeDefs.h +++ b/include/Mw/TypeDefs.h @@ -193,6 +193,7 @@ struct _MwScrollBar { struct _MwLabel { MwLabelSegment* segment; + MwHandler draw; }; struct _MwLabelSegment { diff --git a/src/widget/label.c b/src/widget/label.c index d598e1b..10b4df7 100644 --- a/src/widget/label.c +++ b/src/widget/label.c @@ -361,14 +361,23 @@ static void draw_normal(MwWidget handle) { MwLLFreeColor(base); } +static void draw(MwWidget handle) { + MwLabel lab = handle->internal; + if(!lab->draw) { + lab->draw = draw_normal; + } + lab->draw(handle); +} + static void prop_change(MwWidget handle, const char* key) { if(strcmp(key, MwNtext) == 0 || strcmp(key, MwNalignment) == 0 || strcmp(key, MwNsevenSegment) == 0 || strcmp(key, MwNlength) == 0 || strcmp(key, MwNleftPadding) == 0) MwForceRender(handle); if(strcmp(key, MwNsevenSegment) == 0) { + MwLabel lab = handle->internal; if(MwGetInteger(handle, MwNsevenSegment)) - handle->widget_class->draw = draw_seven_segment; + lab->draw = draw_seven_segment; else - handle->widget_class->draw = draw_normal; + lab->draw = draw_normal; } } @@ -392,7 +401,7 @@ static void func_handler(MwWidget handle, const char* name, void* out, va_list v MwClassRec MwLabelClassRec = { wcreate, /* create */ destroy, /* destroy */ - draw_normal, /* draw */ + draw, /* draw */ NULL, /* click */ NULL, /* parent_resize */ prop_change, /* prop_change */