summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuan Pablo Ugarte <juanpablougarte@gmail.com>2013-07-24 17:06:26 -0300
committerJuan Pablo Ugarte <juanpablougarte@gmail.com>2013-09-25 15:49:55 -0300
commit9cfe5d199b50111be78b7b56bc3793c4e2677195 (patch)
tree707e976c43e5c92f1b751b2dbffbeb3fa887ab94
parentf7746a88f7da0db0d9162a6defe03d7d13272440 (diff)
downloadglade-9cfe5d199b50111be78b7b56bc3793c4e2677195.tar.gz
Set style classes on runtime objects
-rw-r--r--plugins/gtk+/glade-gtk-widget.c29
-rw-r--r--plugins/gtk+/gtk+.xml.in2
2 files changed, 29 insertions, 2 deletions
diff --git a/plugins/gtk+/glade-gtk-widget.c b/plugins/gtk+/glade-gtk-widget.c
index 75b0a8fb..72676977 100644
--- a/plugins/gtk+/glade-gtk-widget.c
+++ b/plugins/gtk+/glade-gtk-widget.c
@@ -733,7 +733,34 @@ glade_gtk_widget_set_property (GladeWidgetAdaptor * adaptor,
if (!strcmp (id, "can-focus"))
return;
- GWA_GET_CLASS (G_TYPE_OBJECT)->set_property (adaptor, object, id, value);
+ if (!strcmp (id, "glade-style-classes"))
+ {
+ GtkStyleContext *context = gtk_widget_get_style_context (GTK_WIDGET (object));
+ GList *l, *styles;
+
+ /* NOTE: we can not use gtk_style_context_list_classes() because we only
+ * want to remove the classes we added not the ones added by the widget
+ */
+ styles = g_object_get_data (object, "glade-style-classes");
+ for (l = styles; l; l = g_list_next (l))
+ {
+ GladeString *style = l->data;
+ gtk_style_context_remove_class (context, style->string);
+ }
+
+ for (l = g_value_get_boxed (value); l; l = g_list_next (l))
+ {
+ GladeString *style = l->data;
+ gtk_style_context_add_class (context, style->string);
+ }
+
+ /* Save the list here so we can use it later on to remove them from the style context */
+ g_object_set_data_full (object, "glade-style-classes",
+ glade_string_list_copy (g_value_get_boxed (value)),
+ (GDestroyNotify) glade_string_list_free);
+ }
+ else
+ GWA_GET_CLASS (G_TYPE_OBJECT)->set_property (adaptor, object, id, value);
}
void
diff --git a/plugins/gtk+/gtk+.xml.in b/plugins/gtk+/gtk+.xml.in
index 1580308d..4ec5ad81 100644
--- a/plugins/gtk+/gtk+.xml.in
+++ b/plugins/gtk+/gtk+.xml.in
@@ -91,7 +91,7 @@
</property>
<property id="glade-style-classes" _name="Style Classes" weight="4.25" custom-layout="True"
- save="False" ignore="True" since="3.0">
+ save="False" since="3.0">
<parameter-spec>
<type>GParamBoxed</type>
<value-type>GladeStringList</value-type>