]> Pileus Git - ~andy/gtk/commitdiff
GtkRadioButton: Move public members to private structure
authorJavier Jardón <jjardon@gnome.org>
Wed, 7 Jul 2010 23:04:11 +0000 (01:04 +0200)
committerJavier Jardón <jjardon@gnome.org>
Tue, 13 Jul 2010 17:40:49 +0000 (19:40 +0200)
gtk/gtkradiobutton.c
gtk/gtkradiobutton.h

index b86772f31fde8e3a1c9cdba8724ee451c9e7be6e..675c29a3d812c9b6b7b6ce42e0c0d5fe250f6fec 100644 (file)
  */
 
 
+struct _GtkRadioButtonPriv
+{
+  GSList *group;
+};
+
 enum {
   PROP_0,
   PROP_GROUP
@@ -188,11 +193,20 @@ gtk_radio_button_class_init (GtkRadioButtonClass *class)
                                       NULL, NULL,
                                       _gtk_marshal_VOID__VOID,
                                       G_TYPE_NONE, 0);
+
+  g_type_class_add_private (class, sizeof (GtkRadioButtonPriv));
 }
 
 static void
 gtk_radio_button_init (GtkRadioButton *radio_button)
 {
+  GtkRadioButtonPriv *priv;
+
+  radio_button->priv = G_TYPE_INSTANCE_GET_PRIVATE (radio_button,
+                                                    GTK_TYPE_RADIO_BUTTON,
+                                                    GtkRadioButtonPriv);
+  priv = radio_button->priv;
+
   gtk_widget_set_has_window (GTK_WIDGET (radio_button), FALSE);
   gtk_widget_set_receives_default (GTK_WIDGET (radio_button), FALSE);
 
@@ -200,7 +214,7 @@ gtk_radio_button_init (GtkRadioButton *radio_button)
 
   GTK_BUTTON (radio_button)->depress_on_activate = FALSE;
 
-  radio_button->group = g_slist_prepend (NULL, radio_button);
+  priv->group = g_slist_prepend (NULL, radio_button);
 
   _gtk_button_set_depressed (GTK_BUTTON (radio_button), TRUE);
   gtk_widget_set_state (GTK_WIDGET (radio_button), GTK_STATE_ACTIVE);
@@ -265,36 +279,39 @@ void
 gtk_radio_button_set_group (GtkRadioButton *radio_button,
                            GSList         *group)
 {
+  GtkRadioButtonPriv *priv;
   GtkWidget *old_group_singleton = NULL;
   GtkWidget *new_group_singleton = NULL;
-  
+
   g_return_if_fail (GTK_IS_RADIO_BUTTON (radio_button));
   g_return_if_fail (!g_slist_find (group, radio_button));
 
-  if (radio_button->group)
+  priv = radio_button->priv;
+
+  if (priv->group)
     {
       GSList *slist;
 
-      radio_button->group = g_slist_remove (radio_button->group, radio_button);
-      
-      if (radio_button->group && !radio_button->group->next)
-       old_group_singleton = g_object_ref (radio_button->group->data);
-         
-      for (slist = radio_button->group; slist; slist = slist->next)
+      priv->group = g_slist_remove (priv->group, radio_button);
+
+      if (priv->group && !priv->group->next)
+       old_group_singleton = g_object_ref (priv->group->data);
+
+      for (slist = priv->group; slist; slist = slist->next)
        {
          GtkRadioButton *tmp_button;
          
          tmp_button = slist->data;
-         
-         tmp_button->group = radio_button->group;
+
+         tmp_button->priv->group = priv->group;
        }
     }
   
   if (group && !group->next)
     new_group_singleton = g_object_ref (group->data);
-  
-  radio_button->group = g_slist_prepend (group, radio_button);
-  
+
+  priv->group = g_slist_prepend (group, radio_button);
+
   if (group)
     {
       GSList *slist;
@@ -304,8 +321,8 @@ gtk_radio_button_set_group (GtkRadioButton *radio_button,
          GtkRadioButton *tmp_button;
          
          tmp_button = slist->data;
-         
-         tmp_button->group = radio_button->group;
+
+         tmp_button->priv->group = priv->group;
        }
     }
 
@@ -481,7 +498,7 @@ gtk_radio_button_get_group (GtkRadioButton *radio_button)
 {
   g_return_val_if_fail (GTK_IS_RADIO_BUTTON (radio_button), NULL);
 
-  return radio_button->group;
+  return radio_button->priv->group;
 }
 
 
@@ -489,31 +506,30 @@ static void
 gtk_radio_button_destroy (GtkObject *object)
 {
   GtkWidget *old_group_singleton = NULL;
-  GtkRadioButton *radio_button;
+  GtkRadioButton *radio_button = GTK_RADIO_BUTTON (object);
+  GtkRadioButtonPriv *priv = radio_button->priv;
   GtkRadioButton *tmp_button;
   GSList *tmp_list;
   gboolean was_in_group;
-  
-  radio_button = GTK_RADIO_BUTTON (object);
 
-  was_in_group = radio_button->group && radio_button->group->next;
-  
-  radio_button->group = g_slist_remove (radio_button->group, radio_button);
-  if (radio_button->group && !radio_button->group->next)
-    old_group_singleton = radio_button->group->data;
+  was_in_group = priv->group && priv->group->next;
 
-  tmp_list = radio_button->group;
+  priv->group = g_slist_remove (priv->group, radio_button);
+  if (priv->group && !priv->group->next)
+    old_group_singleton = priv->group->data;
+
+  tmp_list = priv->group;
 
   while (tmp_list)
     {
       tmp_button = tmp_list->data;
       tmp_list = tmp_list->next;
 
-      tmp_button->group = radio_button->group;
+      tmp_button->priv->group = priv->group;
     }
 
   /* this button is no longer in the group */
-  radio_button->group = NULL;
+  priv->group = NULL;
 
   if (old_group_singleton)
     g_signal_emit (old_group_singleton, group_changed_signal, 0);
@@ -572,6 +588,7 @@ gtk_radio_button_focus (GtkWidget         *widget,
                        GtkDirectionType   direction)
 {
   GtkRadioButton *radio_button = GTK_RADIO_BUTTON (widget);
+  GtkRadioButtonPriv *priv = radio_button->priv;
   GSList *tmp_slist;
 
   /* Radio buttons with draw_indicator unset focus "normally", since
@@ -593,12 +610,12 @@ gtk_radio_button_focus (GtkWidget         *widget,
        {
        case GTK_DIR_LEFT:
        case GTK_DIR_RIGHT:
-         focus_list = g_slist_copy (radio_button->group);
+         focus_list = g_slist_copy (priv->group);
          focus_list = g_slist_sort_with_data (focus_list, left_right_compare, toplevel);
          break;
        case GTK_DIR_UP:
        case GTK_DIR_DOWN:
-         focus_list = g_slist_copy (radio_button->group);
+         focus_list = g_slist_copy (priv->group);
          focus_list = g_slist_sort_with_data (focus_list, up_down_compare, toplevel);
          break;
        case GTK_DIR_TAB_FORWARD:
@@ -688,7 +705,7 @@ gtk_radio_button_focus (GtkWidget         *widget,
        *  - there is no currently active radio button.
        */
       
-      tmp_slist = radio_button->group;
+      tmp_slist = priv->group;
       while (tmp_slist)
        {
          if (GTK_TOGGLE_BUTTON (tmp_slist->data)->active)
@@ -707,16 +724,15 @@ gtk_radio_button_focus (GtkWidget         *widget,
 static void
 gtk_radio_button_clicked (GtkButton *button)
 {
-  GtkToggleButton *toggle_button;
-  GtkRadioButton *radio_button;
+  GtkRadioButton *radio_button = GTK_RADIO_BUTTON (button);
+  GtkRadioButtonPriv *priv = radio_button->priv;
+  GtkToggleButton *toggle_button = GTK_TOGGLE_BUTTON (button);
   GtkToggleButton *tmp_button;
   GtkStateType new_state;
   GSList *tmp_list;
   gint toggled;
   gboolean depressed;
 
-  radio_button = GTK_RADIO_BUTTON (button);
-  toggle_button = GTK_TOGGLE_BUTTON (button);
   toggled = FALSE;
 
   g_object_ref (GTK_WIDGET (button));
@@ -724,7 +740,7 @@ gtk_radio_button_clicked (GtkButton *button)
   if (toggle_button->active)
     {
       tmp_button = NULL;
-      tmp_list = radio_button->group;
+      tmp_list = priv->group;
 
       while (tmp_list)
        {
@@ -752,8 +768,8 @@ gtk_radio_button_clicked (GtkButton *button)
     {
       toggled = TRUE;
       toggle_button->active = !toggle_button->active;
-      
-      tmp_list = radio_button->group;
+
+      tmp_list = priv->group;
       while (tmp_list)
        {
          tmp_button = tmp_list->data;
index fb075131f66e56599c301d09ed841dfb389537d7..7c1e5b4cd612b37408481edad6b8c4c8eb189e34 100644 (file)
@@ -46,13 +46,15 @@ G_BEGIN_DECLS
 
 
 typedef struct _GtkRadioButton      GtkRadioButton;
+typedef struct _GtkRadioButtonPriv   GtkRadioButtonPriv;
 typedef struct _GtkRadioButtonClass  GtkRadioButtonClass;
 
 struct _GtkRadioButton
 {
   GtkCheckButton check_button;
 
-  GSList *GSEAL (group);
+  /* <private> */
+  GtkRadioButtonPriv *priv;
 };
 
 struct _GtkRadioButtonClass