summaryrefslogtreecommitdiff
path: root/gtk/gtkwidget.c
diff options
context:
space:
mode:
Diffstat (limited to 'gtk/gtkwidget.c')
-rw-r--r--gtk/gtkwidget.c27
1 files changed, 24 insertions, 3 deletions
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index 96810975db..41a501fa1d 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -201,8 +201,8 @@ static guint saved_default_style_key_id = 0;
static const gchar *shape_info_key = "gtk-shape-info";
static const gchar *colormap_key = "gtk-colormap";
static const gchar *visual_key = "gtk-visual";
-
-
+static const gchar *rc_style_key = "gtk-rc-style";
+static guint rc_style_key_id = 0;
/*****************************************
* gtk_widget_get_type:
@@ -3047,6 +3047,7 @@ gtk_widget_set_parent (GtkWidget *widget,
GtkStateData data;
g_return_if_fail (widget != NULL);
+ g_return_if_fail (GTK_IS_WIDGET (widget));
g_return_if_fail (widget->parent == NULL);
g_return_if_fail (!GTK_WIDGET_TOPLEVEL (widget));
g_return_if_fail (parent != NULL);
@@ -3109,6 +3110,9 @@ gtk_widget_set_style (GtkWidget *widget,
void
gtk_widget_ensure_style (GtkWidget *widget)
{
+ g_return_if_fail (widget != NULL);
+ g_return_if_fail (GTK_IS_WIDGET (widget));
+
if (!GTK_WIDGET_USER_STYLE (widget) &&
!GTK_WIDGET_RC_STYLE (widget))
gtk_widget_set_rc_style (widget);
@@ -3188,6 +3192,24 @@ gtk_widget_get_style (GtkWidget *widget)
return widget->style;
}
+void
+gtk_widget_modify_style (GtkWidget *widget,
+ GtkRcStyle *style)
+{
+ GtkRcStyle *old_style;
+
+ if (!rc_style_key_id)
+ rc_style_key_id = g_quark_from_static_string (rc_style_key);
+
+ old_style = gtk_object_get_data_by_id (GTK_OBJECT (widget), rc_style_key_id);
+
+ if (style != old_style)
+ gtk_object_set_data_by_id_full (GTK_OBJECT (widget),
+ rc_style_key_id,
+ style,
+ (GtkDestroyNotify)gtk_rc_style_unref);
+}
+
static void
gtk_widget_style_set (GtkWidget *widget,
GtkStyle *previous_style)
@@ -3974,7 +3996,6 @@ gtk_widget_get_default_visual (void)
return default_visual;
}
-
static void
gtk_widget_shutdown (GtkObject *object)
{