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