diff -r 63db7e35e2e9 -r 1b4aae4e8432 ui/gtk/display.c --- a/ui/gtk/display.c Fri Oct 25 15:44:39 2024 +0200 +++ b/ui/gtk/display.c Sun Oct 27 08:25:15 2024 +0100 @@ -35,6 +35,8 @@ #include "../common/object.h" #include "../ui/display.h" +#include + static void set_alignment(GtkWidget *widget, float xalign, float yalign) { #if GTK_MAJOR_VERSION >= 4 || (GTK_MAJOR_VERSION >= 3 && GTK_MINOR_VERSION >= 16) gtk_label_set_xalign(GTK_LABEL(widget), xalign); @@ -47,7 +49,37 @@ UIWIDGET ui_label_create(UiObject *obj, UiLabelArgs args) { UiObject* current = uic_current_obj(obj); + const char *css_class = NULL; + char *markup = NULL; +#if GTK_MAJOR_VERSION < 3 + switch(args.type && args.label) { + case UI_LABEL_STYLE_DEFAULT: break; + case UI_LABEL_STYLE_HEADING: { + cxmutstr m = cx_asprintf("%s", args.label); + markup = m.ptr; + args.label = NULL; + } + } +#else + switch(args.type && args.label) { + case UI_LABEL_STYLE_DEFAULT: break; + case UI_LABEL_STYLE_HEADING: { + css_class = "ui_label_heading"; + break; + } + } +#endif + GtkWidget *widget = gtk_label_new(args.label); + if(markup) { + gtk_label_set_markup(GTK_LABEL(widget), markup); + free(markup); + } + + if(css_class) { + WIDGET_ADD_CSS_CLASS(widget, css_class); + } + switch(args.align) { case UI_ALIGN_DEFAULT: break; case UI_ALIGN_LEFT: set_alignment(widget, 0, .5); break; @@ -55,6 +87,7 @@ case UI_ALIGN_CENTER: break; // TODO } + UiVar* var = uic_widget_var(obj->ctx, current->ctx, args.value, args.varname, UI_VAR_STRING); if(var) { UiString* value = (UiString*)var->value;