summaryrefslogtreecommitdiff
path: root/src/ui/labelwidget.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/labelwidget.c')
-rw-r--r--src/ui/labelwidget.c22
1 files changed, 14 insertions, 8 deletions
diff --git a/src/ui/labelwidget.c b/src/ui/labelwidget.c
index febaa15b..09c5812b 100644
--- a/src/ui/labelwidget.c
+++ b/src/ui/labelwidget.c
@@ -44,6 +44,7 @@ struct Impl_LabelWidget {
44 struct { 44 struct {
45 uint8_t alignVisual : 1; /* align according to visible bounds, not font metrics */ 45 uint8_t alignVisual : 1; /* align according to visible bounds, not font metrics */
46 uint8_t noAutoMinHeight : 1; /* minimum height is not set automatically */ 46 uint8_t noAutoMinHeight : 1; /* minimum height is not set automatically */
47 uint8_t drawAsOutline : 1; /* draw as outline, filled with background color */
47 } flags; 48 } flags;
48}; 49};
49 50
@@ -348,14 +349,14 @@ static void draw_LabelWidget_(const iLabelWidget *d) {
348 cstr_String(&d->label)); 349 cstr_String(&d->label));
349 } 350 }
350 else { 351 else {
351 drawCentered_Text(d->font, 352 drawCenteredOutline_Text(
352 adjusted_Rect(bounds, 353 d->font,
353 add_I2(zero_I2(), init_I2(iconPad, 0)), 354 adjusted_Rect(bounds, add_I2(zero_I2(), init_I2(iconPad, 0)), neg_I2(zero_I2())),
354 neg_I2(zero_I2())), 355 d->flags.alignVisual,
355 d->flags.alignVisual, 356 d->flags.drawAsOutline ? fg : none_ColorId,
356 fg, 357 d->flags.drawAsOutline ? d->widget.bgColor : fg,
357 "%s", 358 "%s",
358 cstr_String(&d->label)); 359 cstr_String(&d->label));
359 } 360 }
360 if (flags & chevron_WidgetFlag) { 361 if (flags & chevron_WidgetFlag) {
361 const iRect chRect = rect; 362 const iRect chRect = rect;
@@ -442,6 +443,7 @@ void init_LabelWidget(iLabelWidget *d, const char *label, const char *cmd) {
442 setFlags_Widget(w, hover_WidgetFlag, d->click.button != 0); 443 setFlags_Widget(w, hover_WidgetFlag, d->click.button != 0);
443 d->flags.alignVisual = iFalse; 444 d->flags.alignVisual = iFalse;
444 d->flags.noAutoMinHeight = iFalse; 445 d->flags.noAutoMinHeight = iFalse;
446 d->flags.drawAsOutline = iFalse;
445 updateSize_LabelWidget(d); 447 updateSize_LabelWidget(d);
446 updateKey_LabelWidget_(d); /* could be bound to another key */ 448 updateKey_LabelWidget_(d); /* could be bound to another key */
447} 449}
@@ -481,6 +483,10 @@ void setNoAutoMinHeight_LabelWidget(iLabelWidget *d, iBool noAutoMinHeight) {
481 } 483 }
482} 484}
483 485
486void setOutline_LabelWidget(iLabelWidget *d, iBool drawAsOutline) {
487 d->flags.drawAsOutline = drawAsOutline;
488}
489
484void updateText_LabelWidget(iLabelWidget *d, const iString *text) { 490void updateText_LabelWidget(iLabelWidget *d, const iString *text) {
485 set_String(&d->label, text); 491 set_String(&d->label, text);
486 set_String(&d->srcLabel, text); 492 set_String(&d->srcLabel, text);