From 9794b6adf9f5885a54450e1dbb7bdf629d17ef2c Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Fri, 12 Mar 2010 19:02:33 +0100 Subject: [PATCH] GtkWidget: Add gtk_widget_get_path(). This function composes and returns a GtkWidgetPath representing the passed widget. --- gtk/gtkwidget.c | 24 +++++++++++++++++++++++- gtk/gtkwidget.h | 3 +++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index c28c31f5a9..f6a1fe31ab 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -13165,6 +13165,27 @@ _gtk_widget_set_height_request_needed (GtkWidget *widget, widget->priv->height_request_needed = height_request_needed; } +GtkWidgetPath * +gtk_widget_get_path (GtkWidget *widget) +{ + GtkWidgetPath *path; + + g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL); + g_return_val_if_fail (GTK_WIDGET_REALIZED (widget), NULL); + + path = gtk_widget_path_new (); + + while (widget) + { + gtk_widget_path_prepend_widget_desc (path, + G_OBJECT_TYPE (widget), + widget->name); + widget = widget->parent; + } + + return path; +} + GtkStyleContext * gtk_widget_get_style_context (GtkWidget *widget) { @@ -13178,7 +13199,8 @@ gtk_widget_get_style_context (GtkWidget *widget) if (G_UNLIKELY (!context)) { context = g_object_new (GTK_TYPE_STYLE_CONTEXT, NULL); - g_object_set_qdata_full (widget, quark_style_context, context, + g_object_set_qdata_full (G_OBJECT (widget), + quark_style_context, context, (GDestroyNotify) g_object_unref); } diff --git a/gtk/gtkwidget.h b/gtk/gtkwidget.h index 23afab27b7..e522b2b9b8 100644 --- a/gtk/gtkwidget.h +++ b/gtk/gtkwidget.h @@ -37,6 +37,7 @@ #include #include #include +#include #include G_BEGIN_DECLS @@ -944,6 +945,8 @@ gboolean gtk_widget_in_destruction (GtkWidget *widget); GtkStyleContext * gtk_widget_get_style_context (GtkWidget *widget); +GtkWidgetPath * gtk_widget_get_path (GtkWidget *widget); + G_END_DECLS