widget: Put the widget's name into the actor

Use GtkCssBox::id instead of keeping a copy in the GtkWidgetPrivate.
This commit is contained in:
Benjamin Otte
2012-12-16 22:53:19 +01:00
parent fe956e983c
commit 8c8a0e1bd6

View File

@@ -358,14 +358,6 @@ struct _GtkWidgetPrivate
/* The base actor for the widget. */
GtkActor *actor;
/* The widget's name. If the widget does not have a name
* (the name is NULL), then its name (as returned by
* "gtk_widget_get_name") is its class's name.
* Among other things, the widget name is used to determine
* the style to use for a widget.
*/
gchar *name;
/* The list of attached windows to this widget.
* We keep a list in order to call reset_style to all of them,
* recursively. */
@@ -3504,8 +3496,8 @@ gtk_widget_get_property (GObject *object,
gpointer *eventp;
case PROP_NAME:
if (priv->name)
g_value_set_string (value, priv->name);
if (_gtk_css_box_get_id (GTK_CSS_BOX (priv->actor)))
g_value_set_string (value, _gtk_css_box_get_id (GTK_CSS_BOX (priv->actor)));
else
g_value_set_static_string (value, "");
break;
@@ -3661,7 +3653,6 @@ gtk_widget_init (GtkWidget *widget)
"visible", FALSE, NULL);
priv->child_visible = TRUE;
priv->name = NULL;
priv->allocation.x = -1;
priv->allocation.y = -1;
priv->allocation.width = 1;
@@ -7224,15 +7215,12 @@ gtk_widget_set_name (GtkWidget *widget,
const gchar *name)
{
GtkWidgetPrivate *priv;
gchar *new_name;
g_return_if_fail (GTK_IS_WIDGET (widget));
priv = widget->priv;
new_name = g_strdup (name);
g_free (priv->name);
priv->name = new_name;
_gtk_css_box_set_id (GTK_CSS_BOX (priv->actor), name);
_gtk_widget_invalidate_style_context (widget, GTK_CSS_CHANGE_NAME);
@@ -7252,14 +7240,14 @@ gtk_widget_set_name (GtkWidget *widget,
const gchar*
gtk_widget_get_name (GtkWidget *widget)
{
GtkWidgetPrivate *priv;
const char *name;
g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
priv = widget->priv;
name = _gtk_css_box_get_id (GTK_CSS_BOX (widget->priv->actor));
if (priv->name)
return priv->name;
if (name)
return name;
return G_OBJECT_TYPE_NAME (widget);
}
@@ -10433,8 +10421,6 @@ gtk_widget_finalize (GObject *object)
g_object_unref (priv->style);
priv->style = NULL;
g_free (priv->name);
aux_info = gtk_widget_get_aux_info (widget, FALSE);
if (aux_info)
gtk_widget_aux_info_destroy (aux_info);
@@ -13928,6 +13914,7 @@ gint
gtk_widget_path_append_for_widget (GtkWidgetPath *path,
GtkWidget *widget)
{
const char *name;
gint pos;
g_return_val_if_fail (path != NULL, 0);
@@ -13935,8 +13922,9 @@ gtk_widget_path_append_for_widget (GtkWidgetPath *path,
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);
name = _gtk_css_box_get_id (GTK_CSS_BOX (widget->priv->actor));
if (name)
gtk_widget_path_iter_set_name (path, pos, name);
if (widget->priv->context)
{