diff --git a/tests/a11y/Makefile.am b/tests/a11y/Makefile.am index d9bf9b8cfc..fd4ab2b3da 100644 --- a/tests/a11y/Makefile.am +++ b/tests/a11y/Makefile.am @@ -29,6 +29,8 @@ TEST_PROGS += text TEST_PROGS += children +TEST_PROGS += derive + # the focus test has no chance of working until # all the idle handlers in gail are gone # diff --git a/tests/a11y/derive.c b/tests/a11y/derive.c new file mode 100644 index 0000000000..6ecb47cf1d --- /dev/null +++ b/tests/a11y/derive.c @@ -0,0 +1,73 @@ +/* + * Copyright (C) 2012 Red Hat Inc. + * + * Author: + * Matthias Clasen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library. If not, see . + */ + +#include +#include + +/* Implement a (trivial) GtkButton subclass, derive GtkButtonAccessible + * and use the derived accessible for our new button. + */ + +typedef GtkButtonAccessible MyButtonAccessible; +typedef GtkButtonAccessibleClass MyButtonAccessibleClass; + +G_DEFINE_TYPE (MyButtonAccessible, my_button_accessible, GTK_TYPE_BUTTON_ACCESSIBLE) + +static void +my_button_accessible_init (MyButtonAccessible *a) +{ +} + +static void +my_button_accessible_class_init (MyButtonAccessibleClass *class) +{ +} + +typedef GtkButton MyButton; +typedef GtkButtonClass MyButtonClass; + +G_DEFINE_TYPE (MyButton, my_button, GTK_TYPE_BUTTON) + +static void +my_button_init (MyButton *b) +{ +} + +static void +my_button_class_init (MyButtonClass *class) +{ + gtk_widget_class_set_accessible_type (GTK_WIDGET_CLASS (class), + my_button_accessible_get_type ()); +} + +int main (int argc, char *argv[]) +{ + GtkWidget *widget; + GtkAccessible *accessible; + + gtk_init (NULL, NULL); + + widget = GTK_WIDGET (g_object_new (my_button_get_type (), NULL)); + accessible = GTK_ACCESSIBLE (gtk_widget_get_accessible (widget)); + + g_assert (G_TYPE_CHECK_INSTANCE_TYPE (accessible, my_button_accessible_get_type ())); + + return 0; +}