summaryrefslogtreecommitdiff
path: root/tests/buildertest.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/buildertest.c')
-rw-r--r--tests/buildertest.c94
1 files changed, 75 insertions, 19 deletions
diff --git a/tests/buildertest.c b/tests/buildertest.c
index 175f273521..98b74b521f 100644
--- a/tests/buildertest.c
+++ b/tests/buildertest.c
@@ -1468,14 +1468,37 @@ test_widget (void)
gchar *buffer3 =
"<interface>"
" <object class=\"GtkWindow\" id=\"window1\">"
- " <accessibility>"
- " <atkproperty name=\"AtkObject::accessible_name\" translatable=\"yes\">Contacts</atkproperty>"
- " <atkrelation target=\"button1\" type=\"labelled-by\"/>"
- " </accessibility>"
+ " <child>"
+ " <object class=\"GtkVBox\" id=\"vbox1\">"
+ " <child>"
+ " <object class=\"GtkLabel\" id=\"label1\">"
+ " <child internal-child=\"accessible\">"
+ " <object class=\"AtkObject\" id=\"a11y-label1\">"
+ " <property name=\"AtkObject::accessible-name\">A Label</property>"
+ " </object>"
+ " </child>"
+ " <accessibility>"
+ " <relation target=\"button1\" type=\"label-for\"/>"
+ " </accessibility>"
+ " </object>"
+ " </child>"
+ " <child>"
+ " <object class=\"GtkButton\" id=\"button1\">"
+ " <accessibility>"
+ " <action action_name=\"click\" description=\"Sliff\"/>"
+ " </accessibility>"
+ " </object>"
+ " </child>"
+ " </object>"
+ " </child>"
" </object>"
- "</interface>";
+ "</interface>";
GtkBuilder *builder;
- GObject *window1, *button1;
+ GObject *window1, *button1, *label1;
+ AtkObject *accessible;
+ AtkRelationSet *relation_set;
+ AtkRelation *relation;
+ char *name;
builder = builder_new_from_string (buffer, -1, NULL);
button1 = gtk_builder_get_object (builder, "button1");
@@ -1493,20 +1516,28 @@ test_widget (void)
g_assert (GTK_WIDGET_RECEIVES_DEFAULT (GTK_WIDGET (button1)));
+ g_object_unref (builder);
+
+ builder = builder_new_from_string (buffer3, -1, NULL);
+
window1 = gtk_builder_get_object (builder, "window1");
+ label1 = gtk_builder_get_object (builder, "label1");
+
+ accessible = gtk_widget_get_accessible (GTK_WIDGET (label1));
+ relation_set = atk_object_ref_relation_set (accessible);
+ g_return_if_fail (atk_relation_set_get_n_relations (relation_set) == 1);
+ relation = atk_relation_set_get_relation (relation_set, 0);
+ g_return_if_fail (relation != NULL);
+ g_return_if_fail (ATK_IS_RELATION (relation));
+ g_return_if_fail (atk_relation_get_relation_type (relation) != ATK_RELATION_LABELLED_BY);
+ g_object_unref (relation_set);
+
+ g_object_get (G_OBJECT (accessible), "accessible-name", &name, NULL);
+ g_return_if_fail (strcmp (name, "A Label") == 0);
+ g_free (name);
+
gtk_widget_destroy (GTK_WIDGET (window1));
g_object_unref (builder);
-
- if (g_test_thorough())
- {
- /* this test currently triggers:
- * "Gtk-WARNING **: <accessibility> is being ignored, see http://bugzilla.gnome.org/show_bug.cgi?id=454653"
- */
- builder = builder_new_from_string (buffer3, -1, NULL);
- window1 = gtk_builder_get_object (builder, "window1");
- gtk_widget_destroy (GTK_WIDGET (window1));
- g_object_unref (builder);
- }
}
static void
@@ -1746,18 +1777,43 @@ test_file (const gchar *filename)
{
GtkBuilder *builder;
GError *error = NULL;
+ GSList *l, *objects;
builder = gtk_builder_new ();
if (!gtk_builder_add_from_file (builder, filename, &error))
{
- g_print ("%s\n", error->message);
+ g_error (error->message);
g_error_free (error);
+ return;
+ }
+
+ objects = gtk_builder_get_objects (builder);
+ for (l = objects; l; l = l->next)
+ {
+ GObject *obj = (GObject*)l->data;
+
+ if (GTK_IS_DIALOG (obj))
+ {
+ int response;
+
+ g_print ("Running dialog %s.\n",
+ gtk_widget_get_name (GTK_WIDGET (obj)));
+ response = gtk_dialog_run (GTK_DIALOG (obj));
+ }
+ else if (GTK_IS_WINDOW (obj))
+ {
+ g_signal_connect (obj, "destroy", G_CALLBACK (gtk_main_quit), NULL);
+ g_print ("Showing %s.\n",
+ gtk_widget_get_name (GTK_WIDGET (obj)));
+ gtk_widget_show_all (GTK_WIDGET (obj));
+ }
}
+ gtk_main ();
+
g_object_unref (builder);
builder = NULL;
-
}
int