From 0ca420918b9b54dd40a27680ee991d845f999970 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Fri, 24 Jun 2011 23:03:15 +0200 Subject: [PATCH] a11y: Remove AtkText implementation from GailExpander AtkText should only be implemented by text editing widgets. For just giving out a small text string, AtkObject::name should be used. --- gtk/a11y/gailexpander.c | 364 +--------------------------------------- 1 file changed, 1 insertion(+), 363 deletions(-) diff --git a/gtk/a11y/gailexpander.c b/gtk/a11y/gailexpander.c index 02ff7beedd..5682b6ba0a 100644 --- a/gtk/a11y/gailexpander.c +++ b/gtk/a11y/gailexpander.c @@ -59,55 +59,8 @@ static const gchar* gail_expander_action_get_name (AtkAction *action, gint i); -/* atktext.h */ -static void atk_text_interface_init (AtkTextIface *iface); - -static gchar* gail_expander_get_text (AtkText *text, - gint start_pos, - gint end_pos); -static gunichar gail_expander_get_character_at_offset - (AtkText *text, - gint offset); -static gchar* gail_expander_get_text_before_offset - (AtkText *text, - gint offset, - AtkTextBoundary boundary_type, - gint *start_offset, - gint *end_offset); -static gchar* gail_expander_get_text_at_offset (AtkText *text, - gint offset, - AtkTextBoundary boundary_type, - gint *start_offset, - gint *end_offset); -static gchar* gail_expander_get_text_after_offset - (AtkText *text, - gint offset, - AtkTextBoundary boundary_type, - gint *start_offset, - gint *end_offset); -static gint gail_expander_get_character_count(AtkText *text); -static void gail_expander_get_character_extents (AtkText *text, - gint offset, - gint *x, - gint *y, - gint *width, - gint *height, - AtkCoordType coords); -static gint gail_expander_get_offset_at_point (AtkText *text, - gint x, - gint y, - AtkCoordType coords); -static AtkAttributeSet* gail_expander_get_run_attributes - (AtkText *text, - gint offset, - gint *start_offset, - gint *end_offset); -static AtkAttributeSet* gail_expander_get_default_attributes - (AtkText *text); - G_DEFINE_TYPE_WITH_CODE (GailExpander, gail_expander, GAIL_TYPE_CONTAINER, - G_IMPLEMENT_INTERFACE (ATK_TYPE_ACTION, atk_action_interface_init) - G_IMPLEMENT_INTERFACE (ATK_TYPE_TEXT, atk_text_interface_init)) + G_IMPLEMENT_INTERFACE (ATK_TYPE_ACTION, atk_action_interface_init)) static void gail_expander_class_init (GailExpanderClass *klass) @@ -496,321 +449,6 @@ gail_expander_ref_state_set (AtkObject *obj) return state_set; } -/* atktext.h */ - -static void -atk_text_interface_init (AtkTextIface *iface) -{ - iface->get_text = gail_expander_get_text; - iface->get_character_at_offset = gail_expander_get_character_at_offset; - iface->get_text_before_offset = gail_expander_get_text_before_offset; - iface->get_text_at_offset = gail_expander_get_text_at_offset; - iface->get_text_after_offset = gail_expander_get_text_after_offset; - iface->get_character_count = gail_expander_get_character_count; - iface->get_character_extents = gail_expander_get_character_extents; - iface->get_offset_at_point = gail_expander_get_offset_at_point; - iface->get_run_attributes = gail_expander_get_run_attributes; - iface->get_default_attributes = gail_expander_get_default_attributes; -} - -static gchar* -gail_expander_get_text (AtkText *text, - gint start_pos, - gint end_pos) -{ - GtkWidget *widget; - GailExpander *expander; - const gchar *label_text; - - widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (text)); - if (widget == NULL) - /* State is defunct */ - return NULL; - - expander = GAIL_EXPANDER (text); - if (!expander->textutil) - gail_expander_init_textutil (expander, GTK_EXPANDER (widget)); - - label_text = gail_expander_get_full_text (GTK_EXPANDER (widget)); - - if (label_text == NULL) - return NULL; - else - return gail_text_util_get_substring (expander->textutil, - start_pos, end_pos); -} - -static gchar* -gail_expander_get_text_before_offset (AtkText *text, - gint offset, - AtkTextBoundary boundary_type, - gint *start_offset, - gint *end_offset) -{ - GtkWidget *widget; - GailExpander *expander; - GtkWidget *label; - - widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (text)); - if (widget == NULL) - /* State is defunct */ - return NULL; - - expander = GAIL_EXPANDER (text); - if (!expander->textutil) - gail_expander_init_textutil (expander, GTK_EXPANDER (widget)); - - label = gtk_expander_get_label_widget (GTK_EXPANDER (widget)); - if (!GTK_IS_LABEL(label)) - return NULL; - return gail_text_util_get_text (expander->textutil, - gtk_label_get_layout (GTK_LABEL (label)), - GAIL_BEFORE_OFFSET, - boundary_type, offset, start_offset, end_offset); -} - -static gchar* -gail_expander_get_text_at_offset (AtkText *text, - gint offset, - AtkTextBoundary boundary_type, - gint *start_offset, - gint *end_offset) -{ - GtkWidget *widget; - GailExpander *expander; - GtkWidget *label; - - widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (text)); - if (widget == NULL) - /* State is defunct */ - return NULL; - - expander = GAIL_EXPANDER (text); - if (!expander->textutil) - gail_expander_init_textutil (expander, GTK_EXPANDER (widget)); - - label = gtk_expander_get_label_widget (GTK_EXPANDER (widget)); - if (!GTK_IS_LABEL(label)) - return NULL; - return gail_text_util_get_text (expander->textutil, - gtk_label_get_layout (GTK_LABEL (label)), - GAIL_AT_OFFSET, - boundary_type, offset, start_offset, end_offset); -} - -static gchar* -gail_expander_get_text_after_offset (AtkText *text, - gint offset, - AtkTextBoundary boundary_type, - gint *start_offset, - gint *end_offset) -{ - GtkWidget *widget; - GailExpander *expander; - GtkWidget *label; - - widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (text)); - if (widget == NULL) - /* State is defunct */ - return NULL; - - expander = GAIL_EXPANDER (text); - if (!expander->textutil) - gail_expander_init_textutil (expander, GTK_EXPANDER (widget)); - - label = gtk_expander_get_label_widget (GTK_EXPANDER (widget)); - if (!GTK_IS_LABEL(label)) - return NULL; - return gail_text_util_get_text (expander->textutil, - gtk_label_get_layout (GTK_LABEL (label)), - GAIL_AFTER_OFFSET, - boundary_type, offset, start_offset, end_offset); -} - -static gint -gail_expander_get_character_count (AtkText *text) -{ - GtkWidget *widget; - GtkWidget *label; - - widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (text)); - if (widget == NULL) - /* State is defunct */ - return 0; - - label = gtk_expander_get_label_widget (GTK_EXPANDER (widget)); - if (!GTK_IS_LABEL(label)) - return 0; - - return g_utf8_strlen (gtk_label_get_text (GTK_LABEL (label)), -1); -} - -static void -gail_expander_get_character_extents (AtkText *text, - gint offset, - gint *x, - gint *y, - gint *width, - gint *height, - AtkCoordType coords) -{ - GtkWidget *widget; - GtkWidget *label; - PangoRectangle char_rect; - gint index, x_layout, y_layout; - const gchar *label_text; - - widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (text)); - if (widget == NULL) - /* State is defunct */ - return; - - label = gtk_expander_get_label_widget (GTK_EXPANDER (widget)); - if (!GTK_IS_LABEL(label)) - return; - - gtk_label_get_layout_offsets (GTK_LABEL (label), &x_layout, &y_layout); - label_text = gtk_label_get_text (GTK_LABEL (label)); - index = g_utf8_offset_to_pointer (label_text, offset) - label_text; - pango_layout_index_to_pos (gtk_label_get_layout (GTK_LABEL (label)), index, &char_rect); - - gail_misc_get_extents_from_pango_rectangle (label, &char_rect, - x_layout, y_layout, x, y, width, height, coords); -} - -static gint -gail_expander_get_offset_at_point (AtkText *text, - gint x, - gint y, - AtkCoordType coords) -{ - GtkWidget *widget; - GtkWidget *label; - gint index, x_layout, y_layout; - const gchar *label_text; - - widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (text)); - if (widget == NULL) - /* State is defunct */ - return -1; - label = gtk_expander_get_label_widget (GTK_EXPANDER (widget)); - - if (!GTK_IS_LABEL(label)) - return -1; - - gtk_label_get_layout_offsets (GTK_LABEL (label), &x_layout, &y_layout); - - index = gail_misc_get_index_at_point_in_layout (label, - gtk_label_get_layout (GTK_LABEL (label)), - x_layout, y_layout, x, y, coords); - label_text = gtk_label_get_text (GTK_LABEL (label)); - if (index == -1) - { - if (coords == ATK_XY_WINDOW || coords == ATK_XY_SCREEN) - return g_utf8_strlen (label_text, -1); - - return index; - } - else - return g_utf8_pointer_to_offset (label_text, label_text + index); -} - -static AtkAttributeSet* -gail_expander_get_run_attributes (AtkText *text, - gint offset, - gint *start_offset, - gint *end_offset) -{ - GtkWidget *widget; - GtkWidget *label; - AtkAttributeSet *at_set = NULL; - GtkJustification justify; - GtkTextDirection dir; - - widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (text)); - if (widget == NULL) - /* State is defunct */ - return NULL; - - label = gtk_expander_get_label_widget (GTK_EXPANDER (widget)); - - if (!GTK_IS_LABEL(label)) - return NULL; - - /* Get values set for entire label, if any */ - justify = gtk_label_get_justify (GTK_LABEL (label)); - if (justify != GTK_JUSTIFY_CENTER) - { - at_set = gail_misc_add_attribute (at_set, - ATK_TEXT_ATTR_JUSTIFICATION, - g_strdup (atk_text_attribute_get_value (ATK_TEXT_ATTR_JUSTIFICATION, justify))); - } - dir = gtk_widget_get_direction (label); - if (dir == GTK_TEXT_DIR_RTL) - { - at_set = gail_misc_add_attribute (at_set, - ATK_TEXT_ATTR_DIRECTION, - g_strdup (atk_text_attribute_get_value (ATK_TEXT_ATTR_DIRECTION, dir))); - } - - at_set = gail_misc_layout_get_run_attributes (at_set, - gtk_label_get_layout (GTK_LABEL (label)), - (gchar *) gtk_label_get_text (GTK_LABEL (label)), - offset, - start_offset, - end_offset); - return at_set; -} - -static AtkAttributeSet* -gail_expander_get_default_attributes (AtkText *text) -{ - GtkWidget *widget; - GtkWidget *label; - AtkAttributeSet *at_set = NULL; - - widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (text)); - if (widget == NULL) - /* State is defunct */ - return NULL; - - label = gtk_expander_get_label_widget (GTK_EXPANDER (widget)); - - if (!GTK_IS_LABEL(label)) - return NULL; - - at_set = gail_misc_get_default_attributes (at_set, - gtk_label_get_layout (GTK_LABEL (label)), - widget); - return at_set; -} - -static gunichar -gail_expander_get_character_at_offset (AtkText *text, - gint offset) -{ - GtkWidget *widget; - GtkWidget *label; - const gchar *string; - gchar *index; - - widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (text)); - if (widget == NULL) - /* State is defunct */ - return '\0'; - - label = gtk_expander_get_label_widget (GTK_EXPANDER (widget)); - - if (!GTK_IS_LABEL(label)) - return '\0'; - string = gtk_label_get_text (GTK_LABEL (label)); - if (offset >= g_utf8_strlen (string, -1)) - return '\0'; - index = g_utf8_offset_to_pointer (string, offset); - - return g_utf8_get_char (index); -} - static void gail_expander_finalize (GObject *object) {