API: Add gtk_widget_path_append_for_widget()
Includes a bunch of header shuffling so we can use GtkWidget* in gtkwidgetpath.h
This commit is contained in:
@ -61,11 +61,6 @@ typedef gboolean (*GtkRcPropertyParser) (const GParamSpec *pspec,
|
|||||||
const GString *rc_string,
|
const GString *rc_string,
|
||||||
GValue *property_value);
|
GValue *property_value);
|
||||||
|
|
||||||
/* We make this forward declaration here, since we pass
|
|
||||||
* GtkWidget's to the draw functions.
|
|
||||||
*/
|
|
||||||
typedef struct _GtkWidget GtkWidget;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* GTK_STYLE_ATTACHED:
|
* GTK_STYLE_ATTACHED:
|
||||||
* @style: a #GtkStyle.
|
* @style: a #GtkStyle.
|
||||||
|
|||||||
@ -14223,6 +14223,52 @@ _gtk_widget_get_sizegroups (GtkWidget *widget)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gtk_widget_path_append_for_widget:
|
||||||
|
* @path: a widget path
|
||||||
|
* @widget: the widget to append to the widget path
|
||||||
|
*
|
||||||
|
* Appends the data from @widget to the widget hierarchy represented
|
||||||
|
* by @path. This function is a shortcut for adding information from
|
||||||
|
* @widget to the given @path. This includes setting the name or
|
||||||
|
* adding the style classes from @widget.
|
||||||
|
*
|
||||||
|
* Returns: the position where the data was inserted
|
||||||
|
*
|
||||||
|
* Since: 3.2
|
||||||
|
**/
|
||||||
|
gint
|
||||||
|
gtk_widget_path_append_for_widget (GtkWidgetPath *path,
|
||||||
|
GtkWidget *widget)
|
||||||
|
{
|
||||||
|
gint pos;
|
||||||
|
|
||||||
|
g_return_val_if_fail (path != NULL, 0);
|
||||||
|
g_return_val_if_fail (GTK_IS_WIDGET (widget), 0);
|
||||||
|
|
||||||
|
pos = gtk_widget_path_append_type (path, G_OBJECT_TYPE (widget));
|
||||||
|
|
||||||
|
if (widget->priv->name)
|
||||||
|
gtk_widget_path_iter_set_name (path, pos, widget->priv->name);
|
||||||
|
|
||||||
|
if (widget->priv->context)
|
||||||
|
{
|
||||||
|
GList *classes, *l;
|
||||||
|
|
||||||
|
/* Also add any persistent classes in
|
||||||
|
* the style context the widget path
|
||||||
|
*/
|
||||||
|
classes = gtk_style_context_list_classes (widget->priv->context);
|
||||||
|
|
||||||
|
for (l = classes; l; l = l->next)
|
||||||
|
gtk_widget_path_iter_add_class (path, pos, l->data);
|
||||||
|
|
||||||
|
g_list_free (classes);
|
||||||
|
}
|
||||||
|
|
||||||
|
return pos;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gtk_widget_get_path:
|
* gtk_widget_get_path:
|
||||||
* @widget: a #GtkWidget
|
* @widget: a #GtkWidget
|
||||||
@ -14253,7 +14299,6 @@ gtk_widget_get_path (GtkWidget *widget)
|
|||||||
if (!widget->priv->path)
|
if (!widget->priv->path)
|
||||||
{
|
{
|
||||||
GtkWidget *parent;
|
GtkWidget *parent;
|
||||||
guint pos;
|
|
||||||
|
|
||||||
parent = widget->priv->parent;
|
parent = widget->priv->parent;
|
||||||
|
|
||||||
@ -14269,28 +14314,11 @@ gtk_widget_get_path (GtkWidget *widget)
|
|||||||
widget->priv->path = gtk_widget_path_new ();
|
widget->priv->path = gtk_widget_path_new ();
|
||||||
}
|
}
|
||||||
|
|
||||||
pos = gtk_widget_path_append_type (widget->priv->path, G_OBJECT_TYPE (widget));
|
gtk_widget_path_append_for_widget (widget->priv->path, widget);
|
||||||
|
|
||||||
if (widget->priv->name)
|
|
||||||
gtk_widget_path_iter_set_name (widget->priv->path, pos, widget->priv->name);
|
|
||||||
|
|
||||||
if (widget->priv->context)
|
if (widget->priv->context)
|
||||||
{
|
gtk_style_context_set_path (widget->priv->context,
|
||||||
GList *classes, *l;
|
widget->priv->path);
|
||||||
|
|
||||||
/* Also add any persistent classes in
|
|
||||||
* the style context the widget path
|
|
||||||
*/
|
|
||||||
classes = gtk_style_context_list_classes (widget->priv->context);
|
|
||||||
|
|
||||||
for (l = classes; l; l = l->next)
|
|
||||||
gtk_widget_path_iter_add_class (widget->priv->path, pos, l->data);
|
|
||||||
|
|
||||||
gtk_style_context_set_path (widget->priv->context,
|
|
||||||
widget->priv->path);
|
|
||||||
|
|
||||||
g_list_free (classes);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return widget->priv->path;
|
return widget->priv->path;
|
||||||
|
|||||||
@ -31,6 +31,10 @@ G_BEGIN_DECLS
|
|||||||
|
|
||||||
typedef struct _GtkWidgetPath GtkWidgetPath;
|
typedef struct _GtkWidgetPath GtkWidgetPath;
|
||||||
|
|
||||||
|
/* We make this forward declaration here, since gtkwidget.h includes us.
|
||||||
|
*/
|
||||||
|
typedef struct _GtkWidget GtkWidget;
|
||||||
|
|
||||||
#define GTK_TYPE_WIDGET_PATH (gtk_widget_path_get_type ())
|
#define GTK_TYPE_WIDGET_PATH (gtk_widget_path_get_type ())
|
||||||
|
|
||||||
GType gtk_widget_path_get_type (void) G_GNUC_CONST;
|
GType gtk_widget_path_get_type (void) G_GNUC_CONST;
|
||||||
@ -46,6 +50,9 @@ gint gtk_widget_path_append_type (GtkWidgetPath *path,
|
|||||||
GType type);
|
GType type);
|
||||||
void gtk_widget_path_prepend_type (GtkWidgetPath *path,
|
void gtk_widget_path_prepend_type (GtkWidgetPath *path,
|
||||||
GType type);
|
GType type);
|
||||||
|
/* gtk_widget_path_append_for_widget() is declared in gtkwidget.c */
|
||||||
|
gint gtk_widget_path_append_for_widget (GtkWidgetPath *path,
|
||||||
|
GtkWidget *widget);
|
||||||
|
|
||||||
GType gtk_widget_path_iter_get_object_type (const GtkWidgetPath *path,
|
GType gtk_widget_path_iter_get_object_type (const GtkWidgetPath *path,
|
||||||
gint pos);
|
gint pos);
|
||||||
|
|||||||
Reference in New Issue
Block a user