widget: Initialize cssnode name asap
authorBenjamin Otte <otte@redhat.com>
Tue, 21 Jan 2020 01:50:07 +0000 (02:50 +0100)
committerBenjamin Otte <otte@redhat.com>
Tue, 21 Jan 2020 11:47:16 +0000 (12:47 +0100)
That way, it's correct in subclass's init functions.

gtk/gtkradiobutton.c
gtk/gtkwidget.c
tests/testgtk.c

index 344cde3b89219a822a213fa3a66e8b3e9f849b03..712c49010e0f86e3cd9390aaa5ceb7b455c97a5f 100644 (file)
@@ -234,18 +234,21 @@ gtk_radio_button_class_init (GtkRadioButtonClass *class)
 }
 
 static void
-gtk_radio_button_init (GtkRadioButton *radio_button)
+gtk_radio_button_init (GtkRadioButton *self)
 {
-  GtkRadioButtonPrivate *priv = gtk_radio_button_get_instance_private (radio_button);
+  GtkRadioButtonPrivate *priv = gtk_radio_button_get_instance_private (self);
+  GtkWidget *widget = GTK_WIDGET (self);
   GtkCssNode *css_node;
 
-  gtk_widget_set_receives_default (GTK_WIDGET (radio_button), FALSE);
+  gtk_widget_set_receives_default (widget, FALSE);
 
-  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radio_button), TRUE);
+  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self), TRUE);
 
-  priv->group = g_slist_prepend (NULL, radio_button);
+  priv->group = g_slist_prepend (NULL, self);
 
-  css_node = gtk_check_button_get_indicator_node (GTK_CHECK_BUTTON (radio_button));
+  css_node = gtk_widget_get_css_node (widget);
+  gtk_css_node_set_name (css_node, I_("radiobutton"));
+  css_node = gtk_check_button_get_indicator_node (GTK_CHECK_BUTTON (self));
   gtk_css_node_set_name (css_node, I_("radio"));
 }
 
index 7a36eecde5855c5026aabd75acf60f8b26c30e01..ccdf26d6d43bfedb500d5889052927f8970d613d 100644 (file)
@@ -1910,8 +1910,6 @@ gtk_widget_set_property (GObject         *object,
     case PROP_CSS_NAME:
       if (g_value_get_string (value) != NULL)
         gtk_css_node_set_name (priv->cssnode, g_intern_string (g_value_get_string (value)));
-      else
-        gtk_css_node_set_name (priv->cssnode, GTK_WIDGET_GET_CLASS (widget)->priv->css_name);
       break;
     case PROP_LAYOUT_MANAGER:
       gtk_widget_set_layout_manager (widget, g_value_dup_object (value));
@@ -2445,7 +2443,8 @@ gtk_widget_init (GTypeInstance *instance, gpointer g_class)
   priv->cssnode = gtk_css_widget_node_new (widget);
   gtk_css_node_set_state (priv->cssnode, priv->state_flags);
   gtk_css_node_set_visible (priv->cssnode, priv->visible);
-  /* need to set correct type here, and only class has the correct type here */
+  /* need to set correct name here, and only class has the correct type here */
+  gtk_css_node_set_name (priv->cssnode, GTK_WIDGET_CLASS (g_class)->priv->css_name);
   gtk_css_node_set_widget_type (priv->cssnode, G_TYPE_FROM_CLASS (g_class));
 
   if (g_type_is_a (G_TYPE_FROM_CLASS (g_class), GTK_TYPE_ROOT))
index 96b80f8d947a90438bb5e00875818064abc023ee..998a13d2181cd7b7fe39449f06777f74758ddb13 100644 (file)
@@ -566,20 +566,17 @@ create_radio_buttons (GtkWidget *widget)
       gtk_container_add (GTK_CONTAINER (box1), box2);
 
       button = gtk_radio_button_new_with_label (NULL, "button4");
-      gtk_check_button_set_draw_indicator (GTK_CHECK_BUTTON (button), FALSE);
       gtk_container_add (GTK_CONTAINER (box2), button);
 
       button = gtk_radio_button_new_with_label (
                 gtk_radio_button_get_group (GTK_RADIO_BUTTON (button)),
                 "button5");
       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), TRUE);
-      gtk_check_button_set_draw_indicator (GTK_CHECK_BUTTON (button), FALSE);
       gtk_container_add (GTK_CONTAINER (box2), button);
 
       button = gtk_radio_button_new_with_label (
                  gtk_radio_button_get_group (GTK_RADIO_BUTTON (button)),
                 "button6");
-      gtk_check_button_set_draw_indicator (GTK_CHECK_BUTTON (button), FALSE);
       gtk_container_add (GTK_CONTAINER (box2), button);
 
       separator = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL);