From 2ad24f982e76e487e7c7f6543c2236723903a22d Mon Sep 17 00:00:00 2001 From: Simon Howard Date: Mon, 22 May 2006 19:23:28 +0000 Subject: Add TXT_SetLabel() function to set the label value. Subversion-branch: /trunk/chocolate-doom Subversion-revision: 511 --- textscreen/txt_label.c | 18 ++++++++++++++---- textscreen/txt_label.h | 1 + 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/textscreen/txt_label.c b/textscreen/txt_label.c index 356623d9..32610f9e 100644 --- a/textscreen/txt_label.c +++ b/textscreen/txt_label.c @@ -48,16 +48,25 @@ txt_widget_class_t txt_label_class = TXT_LabelDestructor, }; -static void TXT_SplitLabel(txt_label_t *label) +void TXT_SetLabel(txt_label_t *label, char *value) { char *p; int y; + // Free back the old label + + free(label->label); + free(label->lines); + + // Set the new value + + label->label = strdup(value); + // Work out how many lines in this label label->h = 1; - for (p = label->label; *p != '\0'; ++p) + for (p = value; *p != '\0'; ++p) { if (*p == '\n') { @@ -98,9 +107,10 @@ txt_label_t *TXT_NewLabel(char *text) TXT_InitWidget(label, &txt_label_class); label->widget.selectable = 0; - label->label = strdup(text); + label->label = NULL; + label->lines = NULL; - TXT_SplitLabel(label); + TXT_SetLabel(label, text); return label; } diff --git a/textscreen/txt_label.h b/textscreen/txt_label.h index 80be506a..26471634 100644 --- a/textscreen/txt_label.h +++ b/textscreen/txt_label.h @@ -38,6 +38,7 @@ struct txt_label_s }; txt_label_t *TXT_NewLabel(char *label); +void TXT_SetLabel(txt_label_t *label, char *value); #endif /* #ifndef TXT_LABEL_H */ -- cgit v1.2.3