From: R?ben Rodrigues <ruben...@live.com.pt>

> On 16-03-2017 11:20, Tilo Villwock wrote:
> > Am Donnerstag, den 16.03.2017, 09:55 +0000 schrieb R?ben Rodrigues:
> >> Hi,
> >>
> >> THanks. This is dynamically? I need in c language if possible :S
> > Dynamic version:
> >
> > ...
> >
> > static GtkCssProvider* provider = NULL;
> >
> > static void
> > set_label_color(GtkWidget* label, const char* color)
> > {
> >      const char* format = "label { color: %s; }";
> >      size_t length = strlen(format) - 2 + 1;
> >      char style[length];
> >      sprintf(style, format, color);
> >
> >      if (provider == NULL) {
> >          /* only create and add the provider the first time */
> >          provider = gtk_css_provider_new();
> >          gtk_style_context_add_provider(
> >              gtk_widget_get_style_context(label),
> >              GTK_STYLE_PROVIDER(provider),
> >              GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
> >          g_object_unref(provider);
> >      }
> >
> >      gtk_css_provider_load_from_data(provider, style, -1, NULL);
> > }
> >
> > ...
> >
> > This might not be ideal in all situations. Just make sure you don't
> > create a new provider everytime you set a new color. Hope that helps.
> >
> > --Tilo
> 

> Hi,
> 
> This is what i have, and don't works...
> 

I have this function (for any widget type):

void set_background_color(GtkWidget *w, gchar *color)
{
GtkCssProvider *gcp;
GtkStyleContext *gsc;
gsc = gtk_widget_get_style_context(w);
const gchar *type = g_type_name (G_TYPE_FROM_INSTANCE (w));
gchar *str = g_strdup_printf ("%s {background-color: %s;}", type,
color);
gcp= gtk_css_provider_new();
gtk_css_provider_load_from_data(gcp, str, -1, 0);
g_free (str);
gtk_style_context_add_provider(gsc, GTK_STYLE_PROVIDER(gcp), 
    GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
}

I don't know if there is a memory leak here though...

HTH

Richard Shann

_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list

Reply via email to