[gtk/ebassi/for-master: 3/6] a11y: Parse reference lists using varargs




commit c264254d4bc2e641042db744a9ada7504d53351f
Author: Emmanuele Bassi <ebassi gnome org>
Date:   Tue Nov 10 14:14:47 2020 +0000

    a11y: Parse reference lists using varargs
    
    Using GList is a bit lame, and makes the API more complicated to use
    than necessary in the common case.
    
    The only real use case for a GList is gtk_widget_add_mnemonic_label(),
    and for that we can use the GValue-based API instead.
    
    Fixes: #3343

 gtk/gtkaccessiblevalue.c    | 31 ++++++++++++++++++++++++-------
 gtk/gtkbutton.c             |  3 +--
 gtk/gtkexpander.c           | 18 +++++++++---------
 gtk/gtkframe.c              |  2 +-
 gtk/gtklabel.c              |  2 +-
 gtk/gtkmenubutton.c         |  3 +--
 gtk/gtkmodelbutton.c        |  4 ++--
 gtk/gtknotebook.c           |  2 +-
 gtk/gtkpopovermenubar.c     |  4 ++--
 gtk/gtkscrolledwindow.c     | 24 ++++++++++++++----------
 gtk/gtkstackswitcher.c      |  2 +-
 gtk/gtktestatcontext.c      | 21 ++++++++++++++++++---
 gtk/gtktestatcontext.h      | 30 +++++++++++++++---------------
 gtk/gtkwidget.c             | 14 +++++++++-----
 testsuite/a11y/accessible.c | 15 ++++-----------
 testsuite/a11y/button.c     |  6 ++----
 testsuite/a11y/expander.c   |  5 +----
 testsuite/a11y/general.c    |  5 +----
 testsuite/a11y/label.c      | 10 ++--------
 testsuite/a11y/scrollbar.c  |  7 ++-----
 testsuite/a11y/stack.c      |  9 ++-------
 21 files changed, 113 insertions(+), 104 deletions(-)
---
diff --git a/gtk/gtkaccessiblevalue.c b/gtk/gtkaccessiblevalue.c
index ae9a0626b4..63cf0321d2 100644
--- a/gtk/gtkaccessiblevalue.c
+++ b/gtk/gtkaccessiblevalue.c
@@ -1120,18 +1120,35 @@ gtk_accessible_value_collect_valist (const GtkAccessibleCollect  *cstate,
         GtkAccessibleValueRefListCtor ctor =
           (GtkAccessibleValueRefListCtor) cstate->ctor;
 
-        GList *value = va_arg (*args, gpointer);
+        GtkAccessible *ref = va_arg (*args, gpointer);
+        GList *value = NULL;
 
-        if (ctor == NULL)
+        while (ref != NULL)
           {
-            if (value == NULL)
-              res = NULL;
-            else
-              res = gtk_reference_list_accessible_value_new (value);
+            if (!GTK_IS_ACCESSIBLE (ref))
+              {
+                g_set_error (error, GTK_ACCESSIBLE_VALUE_ERROR,
+                             GTK_ACCESSIBLE_VALUE_ERROR_INVALID_VALUE,
+                             "Reference of type ā€œ%sā€ [%p] does not implement GtkAccessible",
+                             G_OBJECT_TYPE_NAME (ref), ref);
+                return NULL;
+              }
+
+            value = g_list_prepend (value, ref);
+
+            ref = va_arg (*args, gpointer);
           }
+
+        if (value == NULL)
+          res = gtk_undefined_accessible_value_new ();
         else
           {
-            res = (* ctor) (value);
+            value = g_list_reverse (value);
+
+            if (ctor == NULL)
+              res = gtk_reference_list_accessible_value_new (value);
+            else
+              res = (* ctor) (value);
           }
       }
       break;
diff --git a/gtk/gtkbutton.c b/gtk/gtkbutton.c
index f964eb7495..059853106a 100644
--- a/gtk/gtkbutton.c
+++ b/gtk/gtkbutton.c
@@ -939,8 +939,7 @@ gtk_button_set_icon_name (GtkButton  *button,
     }
 
   gtk_accessible_update_relation (GTK_ACCESSIBLE (button),
-                                  GTK_ACCESSIBLE_RELATION_LABELLED_BY,
-                                    g_list_append (NULL, priv->child),
+                                  GTK_ACCESSIBLE_RELATION_LABELLED_BY, priv->child, NULL,
                                   -1);
 
   gtk_button_set_child_type (button, ICON_CHILD);
diff --git a/gtk/gtkexpander.c b/gtk/gtkexpander.c
index 533b567252..9b60db04a4 100644
--- a/gtk/gtkexpander.c
+++ b/gtk/gtkexpander.c
@@ -1177,8 +1177,6 @@ void
 gtk_expander_set_child (GtkExpander *expander,
                         GtkWidget   *child)
 {
-  GList *list = NULL;
-
   g_return_if_fail (GTK_IS_EXPANDER (expander));
   g_return_if_fail (child == NULL || GTK_IS_WIDGET (child));
 
@@ -1201,14 +1199,16 @@ gtk_expander_set_child (GtkExpander *expander,
             g_object_ref_sink (expander->child);
           g_object_ref (expander->child);
         }
-    }
 
-  if (expander->child)
-    list = g_list_append (list, expander->child);
-  gtk_accessible_update_relation (GTK_ACCESSIBLE (expander),
-                                  GTK_ACCESSIBLE_RELATION_CONTROLS, list,
-                                  -1);
-  g_list_free (list);
+      gtk_accessible_update_relation (GTK_ACCESSIBLE (expander),
+                                      GTK_ACCESSIBLE_RELATION_CONTROLS, expander->child, NULL,
+                                      -1);
+    }
+  else
+    {
+      gtk_accessible_reset_relation (GTK_ACCESSIBLE (expander),
+                                     GTK_ACCESSIBLE_RELATION_CONTROLS);
+    }
 
   g_object_notify (G_OBJECT (expander), "child");
 }
diff --git a/gtk/gtkframe.c b/gtk/gtkframe.c
index a841af7777..a8aa980779 100644
--- a/gtk/gtkframe.c
+++ b/gtk/gtkframe.c
@@ -376,7 +376,7 @@ update_accessible_relation (GtkFrame *frame)
 
   if (priv->label_widget)
     gtk_accessible_update_relation (GTK_ACCESSIBLE (priv->child),
-                                    GTK_ACCESSIBLE_RELATION_LABELLED_BY, g_list_append (NULL, 
priv->label_widget),
+                                    GTK_ACCESSIBLE_RELATION_LABELLED_BY, priv->label_widget, NULL,
                                     -1);
   else
     gtk_accessible_reset_relation (GTK_ACCESSIBLE (priv->child),
diff --git a/gtk/gtklabel.c b/gtk/gtklabel.c
index 2b3ee4c102..6aedef6dd0 100644
--- a/gtk/gtklabel.c
+++ b/gtk/gtklabel.c
@@ -1696,7 +1696,7 @@ gtk_label_set_text_internal (GtkLabel *self,
   self->text = str;
 
   gtk_accessible_update_property (GTK_ACCESSIBLE (self),
-                                  GTK_ACCESSIBLE_PROPERTY_LABEL, str,
+                                  GTK_ACCESSIBLE_PROPERTY_LABEL, self->text,
                                   -1);
 
   gtk_label_select_region_index (self, 0, 0);
diff --git a/gtk/gtkmenubutton.c b/gtk/gtkmenubutton.c
index 4807be3994..93376641c0 100644
--- a/gtk/gtkmenubutton.c
+++ b/gtk/gtkmenubutton.c
@@ -520,8 +520,7 @@ update_sensitivity (GtkMenuButton *self)
                                   -1);
   if (self->popover != NULL)
     gtk_accessible_update_relation (GTK_ACCESSIBLE (self),
-                                    GTK_ACCESSIBLE_RELATION_CONTROLS,
-                                        g_list_append (NULL, self->popover),
+                                    GTK_ACCESSIBLE_RELATION_CONTROLS, self->popover, NULL,
                                     -1);
   else
     gtk_accessible_reset_relation (GTK_ACCESSIBLE (self),
diff --git a/gtk/gtkmodelbutton.c b/gtk/gtkmodelbutton.c
index 4e4815fdc6..f5dc05286a 100644
--- a/gtk/gtkmodelbutton.c
+++ b/gtk/gtkmodelbutton.c
@@ -582,7 +582,7 @@ update_accessible_properties (GtkModelButton *button)
 
   if (button->popover)
     gtk_accessible_update_relation (GTK_ACCESSIBLE (button),
-                                    GTK_ACCESSIBLE_RELATION_CONTROLS, g_list_append (NULL, button->popover),
+                                    GTK_ACCESSIBLE_RELATION_CONTROLS, button->popover, NULL,
                                     -1);
   else
     gtk_accessible_reset_relation (GTK_ACCESSIBLE (button),
@@ -683,7 +683,7 @@ gtk_model_button_set_text (GtkModelButton *button,
   update_visibility (button);
 
   gtk_accessible_update_relation (GTK_ACCESSIBLE (button),
-                                  GTK_ACCESSIBLE_RELATION_LABELLED_BY, g_list_append (NULL, button->label),
+                                  GTK_ACCESSIBLE_RELATION_LABELLED_BY, button->label, NULL,
                                   -1);
 
   g_object_notify_by_pspec (G_OBJECT (button), properties[PROP_TEXT]);
diff --git a/gtk/gtknotebook.c b/gtk/gtknotebook.c
index d210c48fde..6f96faeee1 100644
--- a/gtk/gtknotebook.c
+++ b/gtk/gtknotebook.c
@@ -3968,7 +3968,7 @@ gtk_notebook_insert_notebook_page (GtkNotebook *notebook,
 
   stack_page = gtk_stack_get_page (GTK_STACK (notebook->stack_widget), page->child);
   gtk_accessible_update_relation (GTK_ACCESSIBLE (page->tab_widget),
-                                  GTK_ACCESSIBLE_RELATION_CONTROLS, g_list_append (NULL, stack_page),
+                                  GTK_ACCESSIBLE_RELATION_CONTROLS, stack_page, NULL,
                                   -1);
 
   gtk_accessible_update_state (GTK_ACCESSIBLE (page->tab_widget),
diff --git a/gtk/gtkpopovermenubar.c b/gtk/gtkpopovermenubar.c
index 8e7f2a22d0..447dc5fa65 100644
--- a/gtk/gtkpopovermenubar.c
+++ b/gtk/gtkpopovermenubar.c
@@ -341,8 +341,8 @@ gtk_popover_menu_bar_item_root (GtkWidget *widget)
   GTK_WIDGET_CLASS (gtk_popover_menu_bar_item_parent_class)->root (widget);
 
   gtk_accessible_update_relation (GTK_ACCESSIBLE (widget),
-                                  GTK_ACCESSIBLE_RELATION_LABELLED_BY, g_list_append (NULL, item->label),
-                                  GTK_ACCESSIBLE_RELATION_CONTROLS, g_list_append (NULL, item->popover),
+                                  GTK_ACCESSIBLE_RELATION_LABELLED_BY, item->label, NULL,
+                                  GTK_ACCESSIBLE_RELATION_CONTROLS, item->popover, NULL,
                                   -1);
   gtk_accessible_update_property (GTK_ACCESSIBLE (widget),
                                   GTK_ACCESSIBLE_PROPERTY_HAS_POPUP, TRUE,
diff --git a/gtk/gtkscrolledwindow.c b/gtk/gtkscrolledwindow.c
index 85cdacacd5..afa250c846 100644
--- a/gtk/gtkscrolledwindow.c
+++ b/gtk/gtkscrolledwindow.c
@@ -4106,7 +4106,6 @@ gtk_scrolled_window_set_child (GtkScrolledWindow *scrolled_window,
 {
   GtkScrolledWindowPrivate *priv = gtk_scrolled_window_get_instance_private (scrolled_window);
   GtkWidget *scrollable_child;
-  GList *list;
 
   g_return_if_fail (GTK_IS_SCROLLED_WINDOW (scrolled_window));
 
@@ -4163,16 +4162,21 @@ gtk_scrolled_window_set_child (GtkScrolledWindow *scrolled_window,
     }
 
   if (priv->child)
-    list = g_list_append (NULL, priv->child);
+    {
+      gtk_accessible_update_relation (GTK_ACCESSIBLE (priv->hscrollbar),
+                                      GTK_ACCESSIBLE_RELATION_CONTROLS, priv->child, NULL,
+                                      -1);
+      gtk_accessible_update_relation (GTK_ACCESSIBLE (priv->vscrollbar),
+                                      GTK_ACCESSIBLE_RELATION_CONTROLS, priv->child, NULL,
+                                      -1);
+    }
   else
-    list = NULL;
-  gtk_accessible_update_relation (GTK_ACCESSIBLE (priv->hscrollbar),
-                                  GTK_ACCESSIBLE_RELATION_CONTROLS, list,
-                                  -1);
-  gtk_accessible_update_relation (GTK_ACCESSIBLE (priv->vscrollbar),
-                                  GTK_ACCESSIBLE_RELATION_CONTROLS, list,
-                                  -1);
-  g_list_free (list);
+    {
+      gtk_accessible_reset_relation (GTK_ACCESSIBLE (priv->hscrollbar),
+                                     GTK_ACCESSIBLE_RELATION_CONTROLS);
+      gtk_accessible_reset_relation (GTK_ACCESSIBLE (priv->vscrollbar),
+                                     GTK_ACCESSIBLE_RELATION_CONTROLS);
+    }
 
   g_object_notify_by_pspec (G_OBJECT (scrolled_window), properties[PROP_CHILD]);
 }
diff --git a/gtk/gtkstackswitcher.c b/gtk/gtkstackswitcher.c
index 86fe74d418..29b1962ec5 100644
--- a/gtk/gtkstackswitcher.c
+++ b/gtk/gtkstackswitcher.c
@@ -276,7 +276,7 @@ add_child (guint             position,
                                -1);
 
   gtk_accessible_update_relation (GTK_ACCESSIBLE (button),
-                                  GTK_ACCESSIBLE_RELATION_CONTROLS, g_list_append (NULL, page),
+                                  GTK_ACCESSIBLE_RELATION_CONTROLS, page, NULL,
                                   -1);
 
   g_signal_connect (button, "notify::active", G_CALLBACK (on_button_toggled), self);
diff --git a/gtk/gtktestatcontext.c b/gtk/gtktestatcontext.c
index 4812bc38ae..c8bd222d1a 100644
--- a/gtk/gtktestatcontext.c
+++ b/gtk/gtktestatcontext.c
@@ -171,7 +171,12 @@ gtk_test_accessible_check_property (GtkAccessible         *accessible,
 
   va_end (args);
 
-  g_assert_no_error (error);
+  if (error != NULL)
+    {
+      res = g_strdup (error->message);
+      g_error_free (error);
+      return res;
+    }
 
   if (check_value == NULL)
     check_value = gtk_accessible_value_get_default_for_property (property);
@@ -233,7 +238,12 @@ gtk_test_accessible_check_state (GtkAccessible      *accessible,
 
   va_end (args);
 
-  g_assert_no_error (error);
+  if (error != NULL)
+    {
+      res = g_strdup (error->message);
+      g_error_free (error);
+      return res;
+    }
 
   if (check_value == NULL)
     check_value = gtk_accessible_value_get_default_for_state (state);
@@ -295,7 +305,12 @@ gtk_test_accessible_check_relation (GtkAccessible         *accessible,
 
   va_end (args);
 
-  g_assert_no_error (error);
+  if (error != NULL)
+    {
+      res = g_strdup (error->message);
+      g_error_free (error);
+      return res;
+    }
 
   if (check_value == NULL)
     check_value = gtk_accessible_value_get_default_for_relation (relation);
diff --git a/gtk/gtktestatcontext.h b/gtk/gtktestatcontext.h
index 430e7c405d..70d248b19a 100644
--- a/gtk/gtktestatcontext.h
+++ b/gtk/gtktestatcontext.h
@@ -52,19 +52,19 @@ G_STMT_START { \
  * gtk_test_accessible_assert_property:
  * @accessible: a #GtkAccessible
  * @property: a #GtkAccessibleProperty
- * @value: the value of @property
+ * @...: the value of @property
  *
  * Checks whether a #GtkAccessible implementation has its accessible
- * property set to the expected @value, and raises an assertion if the
+ * property set to the expected value, and raises an assertion if the
  * condition is not satisfied.
  */
-#define gtk_test_accessible_assert_property(accessible,property,value) \
+#define gtk_test_accessible_assert_property(accessible,property,...) \
 G_STMT_START { \
   GtkAccessible *__a = GTK_ACCESSIBLE (accessible); \
   GtkAccessibleProperty __p = (property); \
-  char *__value = gtk_test_accessible_check_property (__a, __p, (value)); \
+  char *__value = gtk_test_accessible_check_property (__a, __p, __VA_ARGS__); \
   if (__value == NULL) ; else { \
-    char *__msg = g_strdup_printf ("assertion failed: (" #accessible ".accessible-property(" #property ") == 
" #value "): value = '%s'", __value); \
+    char *__msg = g_strdup_printf ("assertion failed: (" #accessible ".accessible-property(" #property ") == 
" # __VA_ARGS__ "): value = '%s'", __value); \
     g_assertion_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, __msg); \
     g_free (__msg); \
   } \
@@ -74,19 +74,19 @@ G_STMT_START { \
  * gtk_test_accessible_assert_relation:
  * @accessible: a #GtkAccessible
  * @relation: a #GtkAccessibleRelation
- * @value: the expected value of @relation
+ * @...: the expected value of @relation
  *
  * Checks whether a #GtkAccessible implementation has its accessible
- * relation set to the expected @value, and raises an assertion if the
+ * relation set to the expected value, and raises an assertion if the
  * condition is not satisfied.
  */
-#define gtk_test_accessible_assert_relation(accessible,relation,value) \
+#define gtk_test_accessible_assert_relation(accessible,relation,...) \
 G_STMT_START { \
   GtkAccessible *__a = GTK_ACCESSIBLE (accessible); \
   GtkAccessibleRelation __r = (relation); \
-  char *__value = gtk_test_accessible_check_relation (__a, __r, (value)); \
+  char *__value = gtk_test_accessible_check_relation (__a, __r, __VA_ARGS__); \
   if (__value == NULL); else { \
-    char *__msg = g_strdup_printf ("assertion failed: (" #accessible ".accessible-relation(" #relation ") == 
" #value "): value = '%s'", __value); \
+    char *__msg = g_strdup_printf ("assertion failed: (" #accessible ".accessible-relation(" #relation ") == 
" # __VA_ARGS__ "): value = '%s'", __value); \
     g_assertion_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, __msg); \
     g_free (__msg); \
   } \
@@ -96,19 +96,19 @@ G_STMT_START { \
  * gtk_test_accessible_assert_state:
  * @accessible: a #GtkAccessible
  * @state: a #GtkAccessibleRelation
- * @value: the expected value of @state
+ * @...: the expected value of @state
  *
  * Checks whether a #GtkAccessible implementation has its accessible
- * state set to the expected @value, and raises an assertion if the
+ * state set to the expected value, and raises an assertion if the
  * condition is not satisfied.
  */
-#define gtk_test_accessible_assert_state(accessible,state,value) \
+#define gtk_test_accessible_assert_state(accessible,state,...) \
 G_STMT_START { \
   GtkAccessible *__a = GTK_ACCESSIBLE (accessible); \
   GtkAccessibleState __s = (state); \
-  char *__value = gtk_test_accessible_check_state (__a, __s, (value)); \
+  char *__value = gtk_test_accessible_check_state (__a, __s, __VA_ARGS__); \
   if (__value == NULL); else { \
-    char *__msg = g_strdup_printf ("assertion failed: (" #accessible ".accessible-state(" #state ") == " 
#value "): value = '%s'", __value); \
+    char *__msg = g_strdup_printf ("assertion failed: (" #accessible ".accessible-state(" #state ") == " # 
__VA_ARGS__ "): value = '%s'", __value); \
     g_assertion_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, __msg); \
     g_free (__msg); \
   } \
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index f3670fa96c..c29cc88ec0 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -9329,7 +9329,8 @@ gtk_widget_add_mnemonic_label (GtkWidget *widget,
                                GtkWidget *label)
 {
   GSList *old_list, *new_list;
-  GList *list;
+  GtkAccessibleRelation relation = GTK_ACCESSIBLE_RELATION_LABELLED_BY;
+  GValue value = G_VALUE_INIT;
 
   g_return_if_fail (GTK_IS_WIDGET (widget));
   g_return_if_fail (GTK_IS_WIDGET (label));
@@ -9340,10 +9341,13 @@ gtk_widget_add_mnemonic_label (GtkWidget *widget,
   g_object_set_qdata_full (G_OBJECT (widget), quark_mnemonic_labels,
                           new_list, (GDestroyNotify) g_slist_free);
 
-  list = gtk_widget_list_mnemonic_labels (widget);
-  gtk_accessible_update_relation (GTK_ACCESSIBLE (widget),
-                                  GTK_ACCESSIBLE_RELATION_LABELLED_BY, list,
-                                  -1);
+  /* The ATContext takes ownership of the GList returned by list_mnemonic_labels(),
+   * so we don't need to free it
+   */
+  gtk_accessible_relation_init_value (relation, &value);
+  g_value_set_pointer (&value, gtk_widget_list_mnemonic_labels (widget));
+  gtk_accessible_update_relation_value (GTK_ACCESSIBLE (widget), 1, &relation, &value);
+  g_value_unset (&value);
 }
 
 /**
diff --git a/testsuite/a11y/accessible.c b/testsuite/a11y/accessible.c
index b353d9e94e..2ea857ac3e 100644
--- a/testsuite/a11y/accessible.c
+++ b/testsuite/a11y/accessible.c
@@ -590,7 +590,6 @@ test_reflist_relation (gconstpointer data)
   TestObject *object;
   TestObject *other;
   TestObject *third;
-  GList *refs;
 
   object = test_object_new (GTK_ACCESSIBLE_ROLE_CHECKBOX);
   other = test_object_new (GTK_ACCESSIBLE_ROLE_CHECKBOX);
@@ -600,21 +599,15 @@ test_reflist_relation (gconstpointer data)
 
   gtk_test_accessible_assert_relation (object, relation, NULL);
 
-  refs = g_list_append (NULL, other);
-
   gtk_accessible_update_relation (GTK_ACCESSIBLE (object),
-                                  relation, refs,
+                                  relation, other, NULL,
                                   -1);
-  gtk_test_accessible_assert_relation (object, relation, refs);
-
-  refs = g_list_append (refs, third);
+  gtk_test_accessible_assert_relation (object, relation, other, NULL);
 
   gtk_accessible_update_relation (GTK_ACCESSIBLE (object),
-                                  relation, refs,
+                                  relation, other, third, NULL,
                                   -1);
-  gtk_test_accessible_assert_relation (object, relation, refs);
-
-  g_list_free (refs);
+  gtk_test_accessible_assert_relation (object, relation, other, third, NULL);
 
   g_object_unref (object);
   g_object_unref (other);
diff --git a/testsuite/a11y/button.c b/testsuite/a11y/button.c
index 803a2fecf8..105e424f0c 100644
--- a/testsuite/a11y/button.c
+++ b/testsuite/a11y/button.c
@@ -32,13 +32,11 @@ static void
 button_relation (void)
 {
   GtkWidget *button = gtk_button_new_with_mnemonic ("_Hello");
-  GList *list;
 
   g_object_ref_sink (button);
 
-  list = g_list_append (NULL, gtk_widget_get_first_child (button));
-  gtk_test_accessible_assert_relation (GTK_ACCESSIBLE (button), GTK_ACCESSIBLE_RELATION_LABELLED_BY, list);
-  g_list_free (list);
+  gtk_test_accessible_assert_relation (GTK_ACCESSIBLE (button),
+                                       GTK_ACCESSIBLE_RELATION_LABELLED_BY, gtk_widget_get_first_child 
(button), NULL);
 
   g_object_unref (button);
 }
diff --git a/testsuite/a11y/expander.c b/testsuite/a11y/expander.c
index 169898f796..07d605622b 100644
--- a/testsuite/a11y/expander.c
+++ b/testsuite/a11y/expander.c
@@ -31,15 +31,12 @@ expander_relations (void)
 {
   GtkWidget *widget = gtk_expander_new ("Hello");
   GtkWidget *child = gtk_label_new ("Child");
-  GList *list;
 
   g_object_ref_sink (widget);
 
   gtk_expander_set_child (GTK_EXPANDER (widget), child);
 
-  list = g_list_append (NULL, child);
-  gtk_test_accessible_assert_relation (widget, GTK_ACCESSIBLE_RELATION_CONTROLS, list);
-  g_list_free (list);
+  gtk_test_accessible_assert_relation (widget, GTK_ACCESSIBLE_RELATION_CONTROLS, child, NULL);
 
   g_object_unref (widget);
 }
diff --git a/testsuite/a11y/general.c b/testsuite/a11y/general.c
index fe37d05632..c459b5029c 100644
--- a/testsuite/a11y/general.c
+++ b/testsuite/a11y/general.c
@@ -61,7 +61,6 @@ test_labelled_by (void)
 {
   GtkWidget *widget;
   GtkWidget *label;
-  GList *list;
 
   widget = gtk_switch_new ();
   g_object_ref_sink (widget);
@@ -72,9 +71,7 @@ test_labelled_by (void)
   g_object_ref_sink (label);
   gtk_widget_add_mnemonic_label (widget, label);
 
-  list = g_list_append (NULL, label);
-  gtk_test_accessible_assert_relation (widget, GTK_ACCESSIBLE_RELATION_LABELLED_BY, list);
-  g_list_free (list);
+  gtk_test_accessible_assert_relation (widget, GTK_ACCESSIBLE_RELATION_LABELLED_BY, label, NULL);
 
   g_object_unref (widget);
   g_object_unref (label);
diff --git a/testsuite/a11y/label.c b/testsuite/a11y/label.c
index 3eba936bdf..5b6814af49 100644
--- a/testsuite/a11y/label.c
+++ b/testsuite/a11y/label.c
@@ -18,7 +18,6 @@ label_relations (void)
   GtkWidget *label = gtk_label_new ("a");
   GtkWidget *label2 = gtk_label_new ("b");
   GtkWidget *entry = gtk_entry_new ();
-  GList *list;
 
   g_object_ref_sink (label);
   g_object_ref_sink (label2);
@@ -28,16 +27,11 @@ label_relations (void)
 
   gtk_widget_add_mnemonic_label (entry, label);
 
-  list = g_list_append (NULL, label);
-  gtk_test_accessible_assert_relation (GTK_ACCESSIBLE (entry), GTK_ACCESSIBLE_RELATION_LABELLED_BY, list);
-  g_list_free (list);
+  gtk_test_accessible_assert_relation (GTK_ACCESSIBLE (entry), GTK_ACCESSIBLE_RELATION_LABELLED_BY, label, 
NULL);
 
   gtk_widget_add_mnemonic_label (entry, label2);
 
-  list = g_list_append (NULL, label);
-  list = g_list_append (list, label2);
-  gtk_test_accessible_assert_relation (GTK_ACCESSIBLE (entry), GTK_ACCESSIBLE_RELATION_LABELLED_BY, list);
-  g_list_free (list);
+  gtk_test_accessible_assert_relation (GTK_ACCESSIBLE (entry), GTK_ACCESSIBLE_RELATION_LABELLED_BY, label, 
label2, NULL);
 
   g_object_unref (entry);
   g_object_unref (label);
diff --git a/testsuite/a11y/scrollbar.c b/testsuite/a11y/scrollbar.c
index 7120953151..c17ccb74ef 100644
--- a/testsuite/a11y/scrollbar.c
+++ b/testsuite/a11y/scrollbar.c
@@ -57,7 +57,6 @@ scrollbar_relations (void)
   GtkWidget *hscrollbar;
   GtkWidget *vscrollbar;
   GtkWidget *child;
-  GList *list;
 
   g_object_ref_sink (sw);
 
@@ -70,10 +69,8 @@ scrollbar_relations (void)
   child = gtk_text_view_new ();
   gtk_scrolled_window_set_child (GTK_SCROLLED_WINDOW (sw), child);
 
-  list = g_list_append (NULL, child);
-  gtk_test_accessible_assert_relation (hscrollbar, GTK_ACCESSIBLE_RELATION_CONTROLS, list);
-  gtk_test_accessible_assert_relation (vscrollbar, GTK_ACCESSIBLE_RELATION_CONTROLS, list);
-  g_list_free (list);
+  gtk_test_accessible_assert_relation (hscrollbar, GTK_ACCESSIBLE_RELATION_CONTROLS, child, NULL);
+  gtk_test_accessible_assert_relation (vscrollbar, GTK_ACCESSIBLE_RELATION_CONTROLS, child, NULL);
 
   g_object_unref (sw);
 }
diff --git a/testsuite/a11y/stack.c b/testsuite/a11y/stack.c
index 3f092c9f55..cfa01e229e 100644
--- a/testsuite/a11y/stack.c
+++ b/testsuite/a11y/stack.c
@@ -71,7 +71,6 @@ stack_relations (void)
   GtkWidget *switcher = gtk_stack_switcher_new ();
   GtkWidget *child;
   GtkStackPage *page;
-  GList *list;
 
   g_object_ref_sink (stack);
   g_object_ref_sink (switcher);
@@ -83,15 +82,11 @@ stack_relations (void)
 
   child = gtk_widget_get_first_child (switcher);
   page = gtk_stack_get_page (GTK_STACK (stack), child1);
-  list = g_list_append (NULL, page);
-  gtk_test_accessible_assert_relation (GTK_ACCESSIBLE (child), GTK_ACCESSIBLE_RELATION_CONTROLS, list);
-  g_list_free (list);
+  gtk_test_accessible_assert_relation (GTK_ACCESSIBLE (child), GTK_ACCESSIBLE_RELATION_CONTROLS, page, NULL);
 
   child = gtk_widget_get_last_child (switcher);
   page = gtk_stack_get_page (GTK_STACK (stack), child2);
-  list = g_list_append (NULL, page);
-  gtk_test_accessible_assert_relation (GTK_ACCESSIBLE (child), GTK_ACCESSIBLE_RELATION_CONTROLS, list);
-  g_list_free (list);
+  gtk_test_accessible_assert_relation (GTK_ACCESSIBLE (child), GTK_ACCESSIBLE_RELATION_CONTROLS, page, NULL);
 
   g_object_unref (stack);
   g_object_unref (switcher);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]