};
static FixSeverity
-check_accessibility_errors (GtkWidget *widget,
- GArray *context_elements,
- char **hint)
+check_accessibility_errors (GtkATContext *context,
+ GtkAccessibleRole role,
+ GArray *context_elements,
+ char **hint)
{
- GtkAccessibleRole role;
- GtkATContext *context;
gboolean label_set;
const char *role_name;
GEnumClass *states;
gboolean has_context;
*hint = NULL;
-
- role = gtk_accessible_get_accessible_role (GTK_ACCESSIBLE (widget));
role_name = gtk_accessible_role_to_name (role, NULL);
- context = gtk_accessible_get_at_context (GTK_ACCESSIBLE (widget));
if (!gtk_at_context_is_realized (context))
gtk_at_context_realize (context);
return SEVERITY_GOOD;
}
+static FixSeverity
+check_widget_accessibility_errors (GtkWidget *widget,
+ GArray *context_elements,
+ char **hint)
+{
+ GtkAccessibleRole role;
+ GtkATContext *context;
+ FixSeverity ret;
+
+ role = gtk_accessible_get_accessible_role (GTK_ACCESSIBLE (widget));
+ context = gtk_accessible_get_at_context (GTK_ACCESSIBLE (widget));
+ ret = check_accessibility_errors (context, role, context_elements, hint);
+ g_object_unref (context);
+
+ return ret;
+}
+
static void
recurse_child_widgets (GtkA11yOverlay *self,
GtkWidget *widget,
if (!gtk_widget_get_mapped (widget))
return;
- severity = check_accessibility_errors (widget, self->context, &hint);
+ severity = check_widget_accessibility_errors (widget, self->context, &hint);
if (severity != SEVERITY_GOOD)
{
test_name_content (void)
{
GtkWidget *window, *label1, *label2, *box, *button;
+ GtkATContext *context;
char *name;
label1 = gtk_label_new ("a");
gtk_window_set_child (GTK_WINDOW (window), button);
gtk_window_present (GTK_WINDOW (window));
- name = gtk_at_context_get_name (gtk_accessible_get_at_context (GTK_ACCESSIBLE (label1)));
+ context = gtk_accessible_get_at_context (GTK_ACCESSIBLE (label1));
+ name = gtk_at_context_get_name (context);
g_assert_cmpstr (name, ==, "a");
g_free (name);
+ g_object_unref (context);
/* this is because generic doesn't allow naming */
- name = gtk_at_context_get_name (gtk_accessible_get_at_context (GTK_ACCESSIBLE (box)));
+ context = gtk_accessible_get_at_context (GTK_ACCESSIBLE (box));
+ name = gtk_at_context_get_name (context);
g_assert_cmpstr (name, ==, "");
g_free (name);
+ g_object_unref (context);
- name = gtk_at_context_get_name (gtk_accessible_get_at_context (GTK_ACCESSIBLE (button)));
+ context = gtk_accessible_get_at_context (GTK_ACCESSIBLE (button));
+ name = gtk_at_context_get_name (context);
g_assert_cmpstr (name, ==, "a b");
g_free (name);
+ g_object_unref (context);
gtk_widget_set_visible (label2, FALSE);
- name = gtk_at_context_get_name (gtk_accessible_get_at_context (GTK_ACCESSIBLE (button)));
+ context = gtk_accessible_get_at_context (GTK_ACCESSIBLE (button));
+ name = gtk_at_context_get_name (context);
g_assert_cmpstr (name, ==, "a");
g_free (name);
+ g_object_unref (context);
gtk_window_destroy (GTK_WINDOW (window));
}
test_name_tooltip (void)
{
GtkWidget *window, *image;
+ GtkATContext *context;
char *name;
image = gtk_image_new ();
gtk_widget_set_tooltip_text (image, "tooltip");
- name = gtk_at_context_get_name (gtk_accessible_get_at_context (GTK_ACCESSIBLE (image)));
+ context = gtk_accessible_get_at_context (GTK_ACCESSIBLE (image));
+
+ name = gtk_at_context_get_name (context);
g_assert_cmpstr (name, ==, "tooltip");
g_free (name);
+ g_object_unref (context);
+
gtk_window_destroy (GTK_WINDOW (window));
}
test_name_menubutton (void)
{
GtkWidget *window, *widget;
+ GtkATContext *context;
char *name;
widget = gtk_menu_button_new ();
gtk_widget_set_tooltip_text (widget, "tooltip");
- name = gtk_at_context_get_name (gtk_accessible_get_at_context (GTK_ACCESSIBLE (widget)));
+ context = gtk_accessible_get_at_context (GTK_ACCESSIBLE (widget));
+
+ name = gtk_at_context_get_name (context);
g_assert_cmpstr (name, ==, "tooltip");
g_free (name);
+ g_object_unref (context);
+
gtk_window_destroy (GTK_WINDOW (window));
}
test_name_label (void)
{
GtkWidget *window, *image;
+ GtkATContext *context;
char *name;
char *desc;
GTK_ACCESSIBLE_PROPERTY_LABEL, "label",
-1);
- name = gtk_at_context_get_name (gtk_accessible_get_at_context (GTK_ACCESSIBLE (image)));
- desc = gtk_at_context_get_description (gtk_accessible_get_at_context (GTK_ACCESSIBLE (image)));
+ context = gtk_accessible_get_at_context (GTK_ACCESSIBLE (image));
+
+ name = gtk_at_context_get_name (context);
+ desc = gtk_at_context_get_description (context);
g_assert_cmpstr (name, ==, "label");
g_assert_cmpstr (desc, ==, "tooltip");
g_free (name);
g_free (desc);
+ g_object_unref (context);
+
gtk_window_destroy (GTK_WINDOW (window));
}
test_name_prohibited (void)
{
GtkWidget *window, *widget;
+ GtkATContext *context;
char *name;
char *desc;
gtk_window_set_child (GTK_WINDOW (window), widget);
gtk_window_present (GTK_WINDOW (window));
- name = gtk_at_context_get_name (gtk_accessible_get_at_context (GTK_ACCESSIBLE (widget)));
- desc = gtk_at_context_get_description (gtk_accessible_get_at_context (GTK_ACCESSIBLE (widget)));
+ context = gtk_accessible_get_at_context (GTK_ACCESSIBLE (widget));
+
+ name = gtk_at_context_get_name (context);
+ desc = gtk_at_context_get_description (context);
g_assert_cmpstr (name, ==, "");
g_assert_cmpstr (desc, ==, "");
g_free (name);
g_free (desc);
+ g_object_unref (context);
+
gtk_window_destroy (GTK_WINDOW (window));
}
test_name_range (void)
{
GtkWidget *window, *scale;
+ GtkATContext *context;
char *name;
scale = gtk_scale_new_with_range (GTK_ORIENTATION_HORIZONTAL, 0, 100, 10);
gtk_window_set_child (GTK_WINDOW (window), scale);
gtk_window_present (GTK_WINDOW (window));
+ context = gtk_accessible_get_at_context (GTK_ACCESSIBLE (scale));
+
g_assert_true (gtk_accessible_get_accessible_role (GTK_ACCESSIBLE (scale)) == GTK_ACCESSIBLE_ROLE_SLIDER);
- g_assert_true (gtk_at_context_get_accessible_role (gtk_accessible_get_at_context (GTK_ACCESSIBLE (scale))) == GTK_ACCESSIBLE_ROLE_SLIDER);
+ g_assert_true (gtk_at_context_get_accessible_role (context) == GTK_ACCESSIBLE_ROLE_SLIDER);
gtk_range_set_value (GTK_RANGE (scale), 50);
- name = gtk_at_context_get_name (gtk_accessible_get_at_context (GTK_ACCESSIBLE (scale)));
+ name = gtk_at_context_get_name (context);
g_assert_cmpstr (name, ==, "50");
g_free (name);
+ g_object_unref (context);
+
gtk_window_destroy (GTK_WINDOW (window));
}