[glade] Set style classes on runtime objects
- From: Juan Pablo Ugarte <jpu src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glade] Set style classes on runtime objects
- Date: Thu, 3 Oct 2013 20:36:36 +0000 (UTC)
commit 0ab4b7d37915219c7ad9fc61bf1f38d2285b091d
Author: Juan Pablo Ugarte <juanpablougarte gmail com>
Date: Wed Jul 24 17:06:26 2013 -0300
Set style classes on runtime objects
plugins/gtk+/glade-gtk-widget.c | 29 ++++++++++++++++++++++++++++-
plugins/gtk+/gtk+.xml.in | 2 +-
2 files changed, 29 insertions(+), 2 deletions(-)
---
diff --git a/plugins/gtk+/glade-gtk-widget.c b/plugins/gtk+/glade-gtk-widget.c
index 75b0a8f..7267697 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 1580308..4ec5ad8 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>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]