diff options
author | Jaakko Keränen <jaakko.keranen@iki.fi> | 2021-05-02 09:08:40 +0300 |
---|---|---|
committer | Jaakko Keränen <jaakko.keranen@iki.fi> | 2021-05-02 09:08:40 +0300 |
commit | 3a84507fec34a3186177611218074e98a64ad106 (patch) | |
tree | 38c4b4904a56c2b18ca3e4ee6227323d2bd3bc9b | |
parent | a14895149fad1724e0f4b4df1fd5834bddc4ead4 (diff) |
LabelWidget: Option to disable min height
Sizing of the embedded indicators in the URL bar requires smaller than default minimum height.
-rw-r--r-- | src/ui/labelwidget.c | 20 | ||||
-rw-r--r-- | src/ui/labelwidget.h | 1 | ||||
-rw-r--r-- | src/ui/root.c | 3 |
3 files changed, 20 insertions, 4 deletions
diff --git a/src/ui/labelwidget.c b/src/ui/labelwidget.c index 6847ddf1..e4ab378d 100644 --- a/src/ui/labelwidget.c +++ b/src/ui/labelwidget.c | |||
@@ -39,8 +39,11 @@ struct Impl_LabelWidget { | |||
39 | iChar icon; | 39 | iChar icon; |
40 | int forceFg; | 40 | int forceFg; |
41 | iString command; | 41 | iString command; |
42 | iBool alignVisual; /* align according to visible bounds, not font metrics */ | ||
43 | iClick click; | 42 | iClick click; |
43 | struct { | ||
44 | uint8_t alignVisual : 1; /* align according to visible bounds, not font metrics */ | ||
45 | uint8_t noAutoMinHeight : 1; /* minimum height is not set automatically */ | ||
46 | } flags; | ||
44 | }; | 47 | }; |
45 | 48 | ||
46 | static iInt2 padding_LabelWidget_(const iLabelWidget *d, int corner) { | 49 | static iInt2 padding_LabelWidget_(const iLabelWidget *d, int corner) { |
@@ -339,7 +342,7 @@ static void draw_LabelWidget_(const iLabelWidget *d) { | |||
339 | adjusted_Rect(bounds, | 342 | adjusted_Rect(bounds, |
340 | add_I2(zero_I2(), init_I2(iconPad, 0)), | 343 | add_I2(zero_I2(), init_I2(iconPad, 0)), |
341 | neg_I2(zero_I2())), | 344 | neg_I2(zero_I2())), |
342 | d->alignVisual, | 345 | d->flags.alignVisual, |
343 | fg, | 346 | fg, |
344 | "%s", | 347 | "%s", |
345 | cstr_String(&d->label)); | 348 | cstr_String(&d->label)); |
@@ -425,7 +428,8 @@ void init_LabelWidget(iLabelWidget *d, const char *label, const char *cmd) { | |||
425 | d->kmods = 0; | 428 | d->kmods = 0; |
426 | init_Click(&d->click, d, !isEmpty_String(&d->command) ? SDL_BUTTON_LEFT : 0); | 429 | init_Click(&d->click, d, !isEmpty_String(&d->command) ? SDL_BUTTON_LEFT : 0); |
427 | setFlags_Widget(w, hover_WidgetFlag, d->click.button != 0); | 430 | setFlags_Widget(w, hover_WidgetFlag, d->click.button != 0); |
428 | d->alignVisual = iFalse; | 431 | d->flags.alignVisual = iFalse; |
432 | d->flags.noAutoMinHeight = iFalse; | ||
429 | updateSize_LabelWidget(d); | 433 | updateSize_LabelWidget(d); |
430 | updateKey_LabelWidget_(d); /* could be bound to another key */ | 434 | updateKey_LabelWidget_(d); /* could be bound to another key */ |
431 | } | 435 | } |
@@ -454,7 +458,15 @@ void setText_LabelWidget(iLabelWidget *d, const iString *text) { | |||
454 | } | 458 | } |
455 | 459 | ||
456 | void setAlignVisually_LabelWidget(iLabelWidget *d, iBool alignVisual) { | 460 | void setAlignVisually_LabelWidget(iLabelWidget *d, iBool alignVisual) { |
457 | d->alignVisual = alignVisual; | 461 | d->flags.alignVisual = alignVisual; |
462 | } | ||
463 | |||
464 | void setNoAutoMinHeight_LabelWidget(iLabelWidget *d, iBool noAutoMinHeight) { | ||
465 | /* By default all labels use a minimum height determined by the text dimensions. */ | ||
466 | d->flags.noAutoMinHeight = noAutoMinHeight; | ||
467 | if (noAutoMinHeight) { | ||
468 | d->widget.minSize.y = 0; | ||
469 | } | ||
458 | } | 470 | } |
459 | 471 | ||
460 | void updateText_LabelWidget(iLabelWidget *d, const iString *text) { | 472 | void updateText_LabelWidget(iLabelWidget *d, const iString *text) { |
diff --git a/src/ui/labelwidget.h b/src/ui/labelwidget.h index f4c4658c..e38a1dc8 100644 --- a/src/ui/labelwidget.h +++ b/src/ui/labelwidget.h | |||
@@ -30,6 +30,7 @@ iDeclareWidgetClass(LabelWidget) | |||
30 | iDeclareObjectConstructionArgs(LabelWidget, const char *label, const char *command) | 30 | iDeclareObjectConstructionArgs(LabelWidget, const char *label, const char *command) |
31 | 31 | ||
32 | void setAlignVisually_LabelWidget(iLabelWidget *, iBool alignVisual); | 32 | void setAlignVisually_LabelWidget(iLabelWidget *, iBool alignVisual); |
33 | void setNoAutoMinHeight_LabelWidget(iLabelWidget *, iBool noAutoMinHeight); | ||
33 | void setFont_LabelWidget (iLabelWidget *, int fontId); | 34 | void setFont_LabelWidget (iLabelWidget *, int fontId); |
34 | void setTextColor_LabelWidget (iLabelWidget *, int color); | 35 | void setTextColor_LabelWidget (iLabelWidget *, int color); |
35 | void setText_LabelWidget (iLabelWidget *, const iString *text); /* resizes widget */ | 36 | void setText_LabelWidget (iLabelWidget *, const iString *text); /* resizes widget */ |
diff --git a/src/ui/root.c b/src/ui/root.c index 3661229e..cd6959c4 100644 --- a/src/ui/root.c +++ b/src/ui/root.c | |||
@@ -1020,6 +1020,7 @@ void createUserInterface_Root(iRoot *d) { | |||
1020 | setBackgroundColor_Widget(as_Widget(queryInd), uiBackground_ColorId); | 1020 | setBackgroundColor_Widget(as_Widget(queryInd), uiBackground_ColorId); |
1021 | setFrameColor_Widget(as_Widget(queryInd), uiTextAction_ColorId); | 1021 | setFrameColor_Widget(as_Widget(queryInd), uiTextAction_ColorId); |
1022 | setAlignVisually_LabelWidget(queryInd, iTrue); | 1022 | setAlignVisually_LabelWidget(queryInd, iTrue); |
1023 | setNoAutoMinHeight_LabelWidget(queryInd, iTrue); | ||
1023 | addChildFlags_Widget(rightEmbed, | 1024 | addChildFlags_Widget(rightEmbed, |
1024 | iClob(queryInd), | 1025 | iClob(queryInd), |
1025 | collapse_WidgetFlag | hidden_WidgetFlag); | 1026 | collapse_WidgetFlag | hidden_WidgetFlag); |
@@ -1030,6 +1031,7 @@ void createUserInterface_Root(iRoot *d) { | |||
1030 | setId_Widget(as_Widget(fprog), "feeds.progress"); | 1031 | setId_Widget(as_Widget(fprog), "feeds.progress"); |
1031 | setBackgroundColor_Widget(as_Widget(fprog), uiBackground_ColorId); | 1032 | setBackgroundColor_Widget(as_Widget(fprog), uiBackground_ColorId); |
1032 | setAlignVisually_LabelWidget(fprog, iTrue); | 1033 | setAlignVisually_LabelWidget(fprog, iTrue); |
1034 | setNoAutoMinHeight_LabelWidget(fprog, iTrue); | ||
1033 | addChildFlags_Widget(rightEmbed, | 1035 | addChildFlags_Widget(rightEmbed, |
1034 | iClob(fprog), | 1036 | iClob(fprog), |
1035 | collapse_WidgetFlag | frameless_WidgetFlag | hidden_WidgetFlag); | 1037 | collapse_WidgetFlag | frameless_WidgetFlag | hidden_WidgetFlag); |
@@ -1039,6 +1041,7 @@ void createUserInterface_Root(iRoot *d) { | |||
1039 | setId_Widget(as_Widget(progress), "document.progress"); | 1041 | setId_Widget(as_Widget(progress), "document.progress"); |
1040 | setBackgroundColor_Widget(as_Widget(progress), uiBackground_ColorId); | 1042 | setBackgroundColor_Widget(as_Widget(progress), uiBackground_ColorId); |
1041 | setAlignVisually_LabelWidget(progress, iTrue); | 1043 | setAlignVisually_LabelWidget(progress, iTrue); |
1044 | setNoAutoMinHeight_LabelWidget(progress, iTrue); | ||
1042 | addChildFlags_Widget( | 1045 | addChildFlags_Widget( |
1043 | rightEmbed, iClob(progress), collapse_WidgetFlag); | 1046 | rightEmbed, iClob(progress), collapse_WidgetFlag); |
1044 | } | 1047 | } |