Drop gail_misc_buffer_get_run_attributes
Instead fold the code into the sole caller and get rid of gailmisc usage in the text view accessible altogether.
This commit is contained in:
@ -559,524 +559,3 @@ gail_misc_get_origins (GtkWidget *widget,
|
|||||||
window = gdk_window_get_toplevel (gtk_widget_get_window (widget));
|
window = gdk_window_get_toplevel (gtk_widget_get_window (widget));
|
||||||
gdk_window_get_origin (window, x_toplevel, y_toplevel);
|
gdk_window_get_origin (window, x_toplevel, y_toplevel);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* gail_misc_buffer_get_run_attributes:
|
|
||||||
* @buffer: The #GtkTextBuffer for which the attributes will be obtained
|
|
||||||
* @offset: The offset at which the attributes are required
|
|
||||||
* @start_offset: The start offset of the current run
|
|
||||||
* @end_offset: The end offset of the current run
|
|
||||||
*
|
|
||||||
* Creates an AtkAttributeSet which contains the attributes for the
|
|
||||||
* run starting at offset.
|
|
||||||
*
|
|
||||||
* Returns: A pointer to the #AtkAttributeSet.
|
|
||||||
**/
|
|
||||||
AtkAttributeSet*
|
|
||||||
gail_misc_buffer_get_run_attributes (GtkTextBuffer *buffer,
|
|
||||||
gint offset,
|
|
||||||
gint *start_offset,
|
|
||||||
gint *end_offset)
|
|
||||||
{
|
|
||||||
GtkTextIter iter;
|
|
||||||
AtkAttributeSet *attrib_set = NULL;
|
|
||||||
AtkAttribute *at;
|
|
||||||
GSList *tags, *temp_tags;
|
|
||||||
gdouble scale = 1;
|
|
||||||
gboolean val_set = FALSE;
|
|
||||||
|
|
||||||
gtk_text_buffer_get_iter_at_offset (buffer, &iter, offset);
|
|
||||||
|
|
||||||
gtk_text_iter_forward_to_tag_toggle (&iter, NULL);
|
|
||||||
*end_offset = gtk_text_iter_get_offset (&iter);
|
|
||||||
|
|
||||||
gtk_text_iter_backward_to_tag_toggle (&iter, NULL);
|
|
||||||
*start_offset = gtk_text_iter_get_offset (&iter);
|
|
||||||
|
|
||||||
gtk_text_buffer_get_iter_at_offset (buffer, &iter, offset);
|
|
||||||
|
|
||||||
tags = gtk_text_iter_get_tags (&iter);
|
|
||||||
tags = g_slist_reverse (tags);
|
|
||||||
|
|
||||||
temp_tags = tags;
|
|
||||||
while (temp_tags && !val_set)
|
|
||||||
{
|
|
||||||
GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data);
|
|
||||||
|
|
||||||
g_object_get (tag, "style-set", &val_set, NULL);
|
|
||||||
if (val_set)
|
|
||||||
{
|
|
||||||
PangoStyle style;
|
|
||||||
gchar *value;
|
|
||||||
|
|
||||||
g_object_get (tag, "style", &style, NULL);
|
|
||||||
value = g_strdup (atk_text_attribute_get_value (ATK_TEXT_ATTR_STYLE, style));
|
|
||||||
attrib_set = gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_STYLE, value);
|
|
||||||
}
|
|
||||||
temp_tags = temp_tags->next;
|
|
||||||
}
|
|
||||||
val_set = FALSE;
|
|
||||||
|
|
||||||
temp_tags = tags;
|
|
||||||
while (temp_tags && !val_set)
|
|
||||||
{
|
|
||||||
GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data);
|
|
||||||
|
|
||||||
g_object_get (tag, "variant-set", &val_set, NULL);
|
|
||||||
if (val_set)
|
|
||||||
{
|
|
||||||
PangoVariant variant;
|
|
||||||
gchar *value;
|
|
||||||
|
|
||||||
g_object_get (tag, "variant", &variant, NULL);
|
|
||||||
value = g_strdup (atk_text_attribute_get_value (ATK_TEXT_ATTR_VARIANT, variant));
|
|
||||||
attrib_set = gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_VARIANT, value);
|
|
||||||
}
|
|
||||||
temp_tags = temp_tags->next;
|
|
||||||
}
|
|
||||||
val_set = FALSE;
|
|
||||||
|
|
||||||
temp_tags = tags;
|
|
||||||
while (temp_tags && !val_set)
|
|
||||||
{
|
|
||||||
GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data);
|
|
||||||
|
|
||||||
g_object_get (tag, "stretch-set", &val_set, NULL);
|
|
||||||
if (val_set)
|
|
||||||
{
|
|
||||||
PangoStretch stretch;
|
|
||||||
gchar *value;
|
|
||||||
|
|
||||||
g_object_get (tag, "stretch", &stretch, NULL);
|
|
||||||
value = g_strdup (atk_text_attribute_get_value (ATK_TEXT_ATTR_STRETCH, stretch));
|
|
||||||
attrib_set = gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_STRETCH, value);
|
|
||||||
}
|
|
||||||
temp_tags = temp_tags->next;
|
|
||||||
}
|
|
||||||
val_set = FALSE;
|
|
||||||
|
|
||||||
temp_tags = tags;
|
|
||||||
while (temp_tags && !val_set)
|
|
||||||
{
|
|
||||||
GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data);
|
|
||||||
|
|
||||||
g_object_get (tag, "justification-set", &val_set, NULL);
|
|
||||||
if (val_set)
|
|
||||||
{
|
|
||||||
GtkJustification justification;
|
|
||||||
gchar *value;
|
|
||||||
|
|
||||||
g_object_get (tag, "justification", &justification, NULL);
|
|
||||||
value = g_strdup (atk_text_attribute_get_value (ATK_TEXT_ATTR_JUSTIFICATION, justification));
|
|
||||||
attrib_set = gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_JUSTIFICATION, value);
|
|
||||||
}
|
|
||||||
temp_tags = temp_tags->next;
|
|
||||||
}
|
|
||||||
val_set = FALSE;
|
|
||||||
|
|
||||||
temp_tags = tags;
|
|
||||||
while (temp_tags && !val_set)
|
|
||||||
{
|
|
||||||
GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data);
|
|
||||||
GtkTextDirection direction;
|
|
||||||
|
|
||||||
g_object_get (tag, "direction", &direction, NULL);
|
|
||||||
|
|
||||||
if (direction != GTK_TEXT_DIR_NONE)
|
|
||||||
{
|
|
||||||
gchar *value;
|
|
||||||
val_set = TRUE;
|
|
||||||
value = g_strdup (atk_text_attribute_get_value (ATK_TEXT_ATTR_DIRECTION, direction));
|
|
||||||
attrib_set = gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_DIRECTION, value);
|
|
||||||
}
|
|
||||||
temp_tags = temp_tags->next;
|
|
||||||
}
|
|
||||||
val_set = FALSE;
|
|
||||||
|
|
||||||
temp_tags = tags;
|
|
||||||
while (temp_tags && !val_set)
|
|
||||||
{
|
|
||||||
GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data);
|
|
||||||
|
|
||||||
g_object_get (tag, "wrap-mode-set", &val_set, NULL);
|
|
||||||
if (val_set)
|
|
||||||
{
|
|
||||||
GtkWrapMode wrap_mode;
|
|
||||||
gchar *value;
|
|
||||||
|
|
||||||
g_object_get (tag, "wrap-mode", &wrap_mode, NULL);
|
|
||||||
value = g_strdup (atk_text_attribute_get_value (ATK_TEXT_ATTR_WRAP_MODE, wrap_mode));
|
|
||||||
attrib_set = gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_WRAP_MODE, value);
|
|
||||||
}
|
|
||||||
temp_tags = temp_tags->next;
|
|
||||||
}
|
|
||||||
val_set = FALSE;
|
|
||||||
|
|
||||||
temp_tags = tags;
|
|
||||||
while (temp_tags && !val_set)
|
|
||||||
{
|
|
||||||
GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data);
|
|
||||||
|
|
||||||
g_object_get (tag, "foreground-set", &val_set, NULL);
|
|
||||||
if (val_set)
|
|
||||||
{
|
|
||||||
GdkRGBA *rgba;
|
|
||||||
gchar *value;
|
|
||||||
|
|
||||||
g_object_get (tag, "foreground-rgba", &rgba, NULL);
|
|
||||||
value = g_strdup_printf ("%u,%u,%u",
|
|
||||||
(guint) rgba->red * 65535,
|
|
||||||
(guint) rgba->green * 65535,
|
|
||||||
(guint) rgba->blue * 65535);
|
|
||||||
gdk_rgba_free (rgba);
|
|
||||||
attrib_set = gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_FG_COLOR, value);
|
|
||||||
}
|
|
||||||
temp_tags = temp_tags->next;
|
|
||||||
}
|
|
||||||
val_set = FALSE;
|
|
||||||
|
|
||||||
temp_tags = tags;
|
|
||||||
while (temp_tags && !val_set)
|
|
||||||
{
|
|
||||||
GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data);
|
|
||||||
|
|
||||||
g_object_get (tag, "background-set", &val_set, NULL);
|
|
||||||
if (val_set)
|
|
||||||
{
|
|
||||||
GdkRGBA *rgba;
|
|
||||||
gchar *value;
|
|
||||||
|
|
||||||
g_object_get (tag, "background-rgba", &rgba, NULL);
|
|
||||||
value = g_strdup_printf ("%u,%u,%u",
|
|
||||||
(guint) rgba->red * 65535,
|
|
||||||
(guint) rgba->green * 65535,
|
|
||||||
(guint) rgba->blue * 65535);
|
|
||||||
gdk_rgba_free (rgba);
|
|
||||||
attrib_set = gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_BG_COLOR, value);
|
|
||||||
}
|
|
||||||
temp_tags = temp_tags->next;
|
|
||||||
}
|
|
||||||
val_set = FALSE;
|
|
||||||
|
|
||||||
temp_tags = tags;
|
|
||||||
while (temp_tags && !val_set)
|
|
||||||
{
|
|
||||||
GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data);
|
|
||||||
|
|
||||||
g_object_get (tag, "family-set", &val_set, NULL);
|
|
||||||
|
|
||||||
if (val_set)
|
|
||||||
{
|
|
||||||
gchar *value;
|
|
||||||
g_object_get (tag, "family", &value, NULL);
|
|
||||||
attrib_set = gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_FAMILY_NAME, value);
|
|
||||||
}
|
|
||||||
temp_tags = temp_tags->next;
|
|
||||||
}
|
|
||||||
val_set = FALSE;
|
|
||||||
|
|
||||||
temp_tags = tags;
|
|
||||||
while (temp_tags && !val_set)
|
|
||||||
{
|
|
||||||
GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data);
|
|
||||||
|
|
||||||
g_object_get (tag, "language-set", &val_set, NULL);
|
|
||||||
|
|
||||||
if (val_set)
|
|
||||||
{
|
|
||||||
gchar *value;
|
|
||||||
g_object_get (tag, "language", &value, NULL);
|
|
||||||
attrib_set = gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_LANGUAGE, value);
|
|
||||||
}
|
|
||||||
temp_tags = temp_tags->next;
|
|
||||||
}
|
|
||||||
val_set = FALSE;
|
|
||||||
|
|
||||||
temp_tags = tags;
|
|
||||||
while (temp_tags && !val_set)
|
|
||||||
{
|
|
||||||
GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data);
|
|
||||||
|
|
||||||
g_object_get (tag, "weight-set", &val_set, NULL);
|
|
||||||
|
|
||||||
if (val_set)
|
|
||||||
{
|
|
||||||
gint weight;
|
|
||||||
gchar *value;
|
|
||||||
|
|
||||||
g_object_get (tag, "weight", &weight, NULL);
|
|
||||||
value = g_strdup_printf ("%d", weight);
|
|
||||||
attrib_set = gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_WEIGHT, value);
|
|
||||||
}
|
|
||||||
temp_tags = temp_tags->next;
|
|
||||||
}
|
|
||||||
val_set = FALSE;
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* scale is special as the scale is the product of all scale values
|
|
||||||
* specified.
|
|
||||||
*/
|
|
||||||
temp_tags = tags;
|
|
||||||
while (temp_tags)
|
|
||||||
{
|
|
||||||
GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data);
|
|
||||||
gboolean scale_set;
|
|
||||||
|
|
||||||
g_object_get (tag, "scale-set", &scale_set, NULL);
|
|
||||||
if (scale_set)
|
|
||||||
{
|
|
||||||
gdouble font_scale;
|
|
||||||
|
|
||||||
g_object_get (tag, "scale", &font_scale, NULL);
|
|
||||||
val_set = TRUE;
|
|
||||||
scale *= font_scale;
|
|
||||||
}
|
|
||||||
temp_tags = temp_tags->next;
|
|
||||||
}
|
|
||||||
if (val_set)
|
|
||||||
{
|
|
||||||
at = g_malloc(sizeof(AtkAttribute));
|
|
||||||
at->name = g_strdup(atk_text_attribute_get_name (ATK_TEXT_ATTR_SCALE));
|
|
||||||
at->value = g_strdup_printf("%g", scale);
|
|
||||||
attrib_set = g_slist_prepend(attrib_set, at);
|
|
||||||
}
|
|
||||||
val_set = FALSE;
|
|
||||||
|
|
||||||
temp_tags = tags;
|
|
||||||
while (temp_tags && !val_set)
|
|
||||||
{
|
|
||||||
GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data);
|
|
||||||
|
|
||||||
g_object_get (tag, "size-set", &val_set, NULL);
|
|
||||||
if (val_set)
|
|
||||||
{
|
|
||||||
gint size;
|
|
||||||
gchar *value;
|
|
||||||
g_object_get (tag, "size", &size, NULL);
|
|
||||||
value = g_strdup_printf ("%i", size);
|
|
||||||
attrib_set = gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_SIZE, value);
|
|
||||||
}
|
|
||||||
temp_tags = temp_tags->next;
|
|
||||||
}
|
|
||||||
val_set = FALSE;
|
|
||||||
|
|
||||||
temp_tags = tags;
|
|
||||||
while (temp_tags && !val_set)
|
|
||||||
{
|
|
||||||
GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data);
|
|
||||||
|
|
||||||
g_object_get (tag, "strikethrough-set", &val_set, NULL);
|
|
||||||
if (val_set)
|
|
||||||
{
|
|
||||||
gboolean strikethrough;
|
|
||||||
gchar *value;
|
|
||||||
g_object_get (tag, "strikethrough", &strikethrough, NULL);
|
|
||||||
value = g_strdup (atk_text_attribute_get_value (ATK_TEXT_ATTR_STRIKETHROUGH, strikethrough));
|
|
||||||
attrib_set = gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_STRIKETHROUGH, value);
|
|
||||||
}
|
|
||||||
temp_tags = temp_tags->next;
|
|
||||||
}
|
|
||||||
val_set = FALSE;
|
|
||||||
|
|
||||||
temp_tags = tags;
|
|
||||||
while (temp_tags && !val_set)
|
|
||||||
{
|
|
||||||
GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data);
|
|
||||||
|
|
||||||
g_object_get (tag, "underline-set", &val_set, NULL);
|
|
||||||
if (val_set)
|
|
||||||
{
|
|
||||||
PangoUnderline underline;
|
|
||||||
gchar *value;
|
|
||||||
g_object_get (tag, "underline", &underline, NULL);
|
|
||||||
value = g_strdup (atk_text_attribute_get_value (ATK_TEXT_ATTR_UNDERLINE, underline));
|
|
||||||
attrib_set = gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_UNDERLINE, value);
|
|
||||||
}
|
|
||||||
temp_tags = temp_tags->next;
|
|
||||||
}
|
|
||||||
val_set = FALSE;
|
|
||||||
|
|
||||||
temp_tags = tags;
|
|
||||||
while (temp_tags && !val_set)
|
|
||||||
{
|
|
||||||
GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data);
|
|
||||||
|
|
||||||
g_object_get (tag, "rise-set", &val_set, NULL);
|
|
||||||
if (val_set)
|
|
||||||
{
|
|
||||||
gint rise;
|
|
||||||
gchar *value;
|
|
||||||
g_object_get (tag, "rise", &rise, NULL);
|
|
||||||
value = g_strdup_printf ("%i", rise);
|
|
||||||
attrib_set = gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_RISE, value);
|
|
||||||
}
|
|
||||||
temp_tags = temp_tags->next;
|
|
||||||
}
|
|
||||||
val_set = FALSE;
|
|
||||||
|
|
||||||
temp_tags = tags;
|
|
||||||
while (temp_tags && !val_set)
|
|
||||||
{
|
|
||||||
GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data);
|
|
||||||
|
|
||||||
g_object_get (tag, "background-full-height-set", &val_set, NULL);
|
|
||||||
if (val_set)
|
|
||||||
{
|
|
||||||
gboolean bg_full_height;
|
|
||||||
gchar *value;
|
|
||||||
g_object_get (tag, "background-full-height", &bg_full_height, NULL);
|
|
||||||
value = g_strdup (atk_text_attribute_get_value (ATK_TEXT_ATTR_BG_FULL_HEIGHT, bg_full_height));
|
|
||||||
attrib_set = gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_BG_FULL_HEIGHT, value);
|
|
||||||
}
|
|
||||||
temp_tags = temp_tags->next;
|
|
||||||
}
|
|
||||||
val_set = FALSE;
|
|
||||||
|
|
||||||
temp_tags = tags;
|
|
||||||
while (temp_tags && !val_set)
|
|
||||||
{
|
|
||||||
GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data);
|
|
||||||
|
|
||||||
g_object_get (tag, "pixels-inside-wrap-set", &val_set, NULL);
|
|
||||||
if (val_set)
|
|
||||||
{
|
|
||||||
gint pixels;
|
|
||||||
gchar *value;
|
|
||||||
g_object_get (tag, "pixels-inside-wrap", &pixels, NULL);
|
|
||||||
value = g_strdup_printf ("%i", pixels);
|
|
||||||
attrib_set = gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_PIXELS_INSIDE_WRAP, value);
|
|
||||||
}
|
|
||||||
temp_tags = temp_tags->next;
|
|
||||||
}
|
|
||||||
val_set = FALSE;
|
|
||||||
|
|
||||||
temp_tags = tags;
|
|
||||||
while (temp_tags && !val_set)
|
|
||||||
{
|
|
||||||
GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data);
|
|
||||||
|
|
||||||
g_object_get (tag, "pixels-below-lines-set", &val_set, NULL);
|
|
||||||
if (val_set)
|
|
||||||
{
|
|
||||||
gint pixels;
|
|
||||||
gchar *value;
|
|
||||||
g_object_get (tag, "pixels-below-lines", &pixels, NULL);
|
|
||||||
value = g_strdup_printf ("%i", pixels);
|
|
||||||
attrib_set = gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_PIXELS_BELOW_LINES, value);
|
|
||||||
}
|
|
||||||
temp_tags = temp_tags->next;
|
|
||||||
}
|
|
||||||
val_set = FALSE;
|
|
||||||
|
|
||||||
temp_tags = tags;
|
|
||||||
while (temp_tags && !val_set)
|
|
||||||
{
|
|
||||||
GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data);
|
|
||||||
|
|
||||||
g_object_get (tag, "pixels-above-lines-set", &val_set, NULL);
|
|
||||||
if (val_set)
|
|
||||||
{
|
|
||||||
gint pixels;
|
|
||||||
gchar *value;
|
|
||||||
g_object_get (tag, "pixels-above-lines", &pixels, NULL);
|
|
||||||
value = g_strdup_printf ("%i", pixels);
|
|
||||||
attrib_set = gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_PIXELS_ABOVE_LINES, value);
|
|
||||||
}
|
|
||||||
temp_tags = temp_tags->next;
|
|
||||||
}
|
|
||||||
val_set = FALSE;
|
|
||||||
|
|
||||||
temp_tags = tags;
|
|
||||||
while (temp_tags && !val_set)
|
|
||||||
{
|
|
||||||
GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data);
|
|
||||||
|
|
||||||
g_object_get (tag, "editable-set", &val_set, NULL);
|
|
||||||
if (val_set)
|
|
||||||
{
|
|
||||||
gboolean editable;
|
|
||||||
gchar *value;
|
|
||||||
g_object_get (tag, "editable", &editable, NULL);
|
|
||||||
value = g_strdup (atk_text_attribute_get_value (ATK_TEXT_ATTR_EDITABLE, editable));
|
|
||||||
attrib_set = gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_EDITABLE, value);
|
|
||||||
}
|
|
||||||
temp_tags = temp_tags->next;
|
|
||||||
}
|
|
||||||
val_set = FALSE;
|
|
||||||
|
|
||||||
temp_tags = tags;
|
|
||||||
while (temp_tags && !val_set)
|
|
||||||
{
|
|
||||||
GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data);
|
|
||||||
|
|
||||||
g_object_get (tag, "invisible-set", &val_set, NULL);
|
|
||||||
if (val_set)
|
|
||||||
{
|
|
||||||
gboolean invisible;
|
|
||||||
gchar *value;
|
|
||||||
g_object_get (tag, "invisible", &invisible, NULL);
|
|
||||||
value = g_strdup (atk_text_attribute_get_value (ATK_TEXT_ATTR_INVISIBLE, invisible));
|
|
||||||
attrib_set = gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_INVISIBLE, value);
|
|
||||||
}
|
|
||||||
temp_tags = temp_tags->next;
|
|
||||||
}
|
|
||||||
val_set = FALSE;
|
|
||||||
|
|
||||||
temp_tags = tags;
|
|
||||||
while (temp_tags && !val_set)
|
|
||||||
{
|
|
||||||
GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data);
|
|
||||||
|
|
||||||
g_object_get (tag, "indent-set", &val_set, NULL);
|
|
||||||
if (val_set)
|
|
||||||
{
|
|
||||||
gint indent;
|
|
||||||
gchar *value;
|
|
||||||
g_object_get (tag, "indent", &indent, NULL);
|
|
||||||
value = g_strdup_printf ("%i", indent);
|
|
||||||
attrib_set = gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_INDENT, value);
|
|
||||||
}
|
|
||||||
temp_tags = temp_tags->next;
|
|
||||||
}
|
|
||||||
val_set = FALSE;
|
|
||||||
|
|
||||||
temp_tags = tags;
|
|
||||||
while (temp_tags && !val_set)
|
|
||||||
{
|
|
||||||
GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data);
|
|
||||||
|
|
||||||
g_object_get (tag, "right-margin-set", &val_set, NULL);
|
|
||||||
if (val_set)
|
|
||||||
{
|
|
||||||
gint margin;
|
|
||||||
gchar *value;
|
|
||||||
g_object_get (tag, "right-margin", &margin, NULL);
|
|
||||||
value = g_strdup_printf ("%i", margin);
|
|
||||||
attrib_set = gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_RIGHT_MARGIN, value);
|
|
||||||
}
|
|
||||||
temp_tags = temp_tags->next;
|
|
||||||
}
|
|
||||||
val_set = FALSE;
|
|
||||||
|
|
||||||
temp_tags = tags;
|
|
||||||
while (temp_tags && !val_set)
|
|
||||||
{
|
|
||||||
GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data);
|
|
||||||
|
|
||||||
g_object_get (tag, "left-margin-set", &val_set, NULL);
|
|
||||||
if (val_set)
|
|
||||||
{
|
|
||||||
gint margin;
|
|
||||||
gchar *value;
|
|
||||||
g_object_get (tag, "left-margin", &margin, NULL);
|
|
||||||
value = g_strdup_printf ("%i", margin);
|
|
||||||
attrib_set = gail_misc_add_attribute (attrib_set, ATK_TEXT_ATTR_LEFT_MARGIN, value);
|
|
||||||
}
|
|
||||||
temp_tags = temp_tags->next;
|
|
||||||
}
|
|
||||||
val_set = FALSE;
|
|
||||||
|
|
||||||
g_slist_free (tags);
|
|
||||||
return attrib_set;
|
|
||||||
}
|
|
||||||
|
|||||||
@ -27,7 +27,6 @@
|
|||||||
#include <glib/gstdio.h>
|
#include <glib/gstdio.h>
|
||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
#include "gtktextviewaccessible.h"
|
#include "gtktextviewaccessible.h"
|
||||||
#include "gailmisc.h"
|
|
||||||
|
|
||||||
|
|
||||||
static void setup_buffer (GtkTextView *view,GtkTextViewAccessible *accessible);
|
static void setup_buffer (GtkTextView *view,GtkTextViewAccessible *accessible);
|
||||||
@ -438,6 +437,33 @@ gtk_text_view_accessible_get_character_extents (AtkText *text,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static AtkAttributeSet *
|
||||||
|
add_text_attribute (AtkAttributeSet *attributes,
|
||||||
|
AtkTextAttribute attr,
|
||||||
|
gchar *value)
|
||||||
|
{
|
||||||
|
AtkAttribute *at;
|
||||||
|
|
||||||
|
at = g_new (AtkAttribute, 1);
|
||||||
|
at->name = g_strdup (atk_text_attribute_get_name (attr));
|
||||||
|
at->value = value;
|
||||||
|
|
||||||
|
return g_slist_prepend (attributes, at);
|
||||||
|
}
|
||||||
|
|
||||||
|
static AtkAttributeSet *
|
||||||
|
add_text_int_attribute (AtkAttributeSet *attributes,
|
||||||
|
AtkTextAttribute attr,
|
||||||
|
gint i)
|
||||||
|
|
||||||
|
{
|
||||||
|
gchar *value;
|
||||||
|
|
||||||
|
value = g_strdup (atk_text_attribute_get_value (attr, i));
|
||||||
|
|
||||||
|
return add_text_attribute (attributes, attr, value);
|
||||||
|
}
|
||||||
|
|
||||||
static AtkAttributeSet *
|
static AtkAttributeSet *
|
||||||
gtk_text_view_accessible_get_run_attributes (AtkText *text,
|
gtk_text_view_accessible_get_run_attributes (AtkText *text,
|
||||||
gint offset,
|
gint offset,
|
||||||
@ -447,6 +473,12 @@ gtk_text_view_accessible_get_run_attributes (AtkText *text,
|
|||||||
GtkTextView *view;
|
GtkTextView *view;
|
||||||
GtkTextBuffer *buffer;
|
GtkTextBuffer *buffer;
|
||||||
GtkWidget *widget;
|
GtkWidget *widget;
|
||||||
|
GtkTextIter iter;
|
||||||
|
AtkAttributeSet *attrib_set = NULL;
|
||||||
|
GSList *tags, *temp_tags;
|
||||||
|
gdouble scale = 1;
|
||||||
|
gboolean val_set = FALSE;
|
||||||
|
|
||||||
|
|
||||||
widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (text));
|
widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (text));
|
||||||
if (widget == NULL)
|
if (widget == NULL)
|
||||||
@ -455,23 +487,468 @@ gtk_text_view_accessible_get_run_attributes (AtkText *text,
|
|||||||
view = GTK_TEXT_VIEW (widget);
|
view = GTK_TEXT_VIEW (widget);
|
||||||
buffer = gtk_text_view_get_buffer (view);
|
buffer = gtk_text_view_get_buffer (view);
|
||||||
|
|
||||||
return gail_misc_buffer_get_run_attributes (buffer, offset,
|
gtk_text_buffer_get_iter_at_offset (buffer, &iter, offset);
|
||||||
start_offset, end_offset);
|
|
||||||
}
|
|
||||||
|
|
||||||
static AtkAttributeSet *
|
gtk_text_iter_forward_to_tag_toggle (&iter, NULL);
|
||||||
add_text_attribute (AtkAttributeSet *attributes,
|
*end_offset = gtk_text_iter_get_offset (&iter);
|
||||||
AtkTextAttribute attr,
|
|
||||||
gint i)
|
|
||||||
{
|
|
||||||
AtkAttribute *at;
|
|
||||||
|
|
||||||
at = g_new (AtkAttribute, 1);
|
gtk_text_iter_backward_to_tag_toggle (&iter, NULL);
|
||||||
|
*start_offset = gtk_text_iter_get_offset (&iter);
|
||||||
|
|
||||||
at->name = g_strdup (atk_text_attribute_get_name (attr));
|
gtk_text_buffer_get_iter_at_offset (buffer, &iter, offset);
|
||||||
at->value = g_strdup (atk_text_attribute_get_value (attr, i));
|
|
||||||
|
|
||||||
return g_slist_prepend (attributes, at);
|
tags = gtk_text_iter_get_tags (&iter);
|
||||||
|
tags = g_slist_reverse (tags);
|
||||||
|
|
||||||
|
temp_tags = tags;
|
||||||
|
while (temp_tags && !val_set)
|
||||||
|
{
|
||||||
|
GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data);
|
||||||
|
|
||||||
|
g_object_get (tag, "style-set", &val_set, NULL);
|
||||||
|
if (val_set)
|
||||||
|
{
|
||||||
|
PangoStyle style;
|
||||||
|
g_object_get (tag, "style", &style, NULL);
|
||||||
|
attrib_set = add_text_int_attribute (attrib_set, ATK_TEXT_ATTR_STYLE, style);
|
||||||
|
}
|
||||||
|
temp_tags = temp_tags->next;
|
||||||
|
}
|
||||||
|
val_set = FALSE;
|
||||||
|
|
||||||
|
temp_tags = tags;
|
||||||
|
while (temp_tags && !val_set)
|
||||||
|
{
|
||||||
|
GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data);
|
||||||
|
|
||||||
|
g_object_get (tag, "variant-set", &val_set, NULL);
|
||||||
|
if (val_set)
|
||||||
|
{
|
||||||
|
PangoVariant variant;
|
||||||
|
g_object_get (tag, "variant", &variant, NULL);
|
||||||
|
attrib_set = add_text_int_attribute (attrib_set, ATK_TEXT_ATTR_VARIANT, variant);
|
||||||
|
}
|
||||||
|
temp_tags = temp_tags->next;
|
||||||
|
}
|
||||||
|
val_set = FALSE;
|
||||||
|
|
||||||
|
temp_tags = tags;
|
||||||
|
while (temp_tags && !val_set)
|
||||||
|
{
|
||||||
|
GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data);
|
||||||
|
|
||||||
|
g_object_get (tag, "stretch-set", &val_set, NULL);
|
||||||
|
if (val_set)
|
||||||
|
{
|
||||||
|
PangoStretch stretch;
|
||||||
|
g_object_get (tag, "stretch", &stretch, NULL);
|
||||||
|
attrib_set = add_text_int_attribute (attrib_set, ATK_TEXT_ATTR_STRETCH, stretch);
|
||||||
|
}
|
||||||
|
temp_tags = temp_tags->next;
|
||||||
|
}
|
||||||
|
val_set = FALSE;
|
||||||
|
|
||||||
|
temp_tags = tags;
|
||||||
|
while (temp_tags && !val_set)
|
||||||
|
{
|
||||||
|
GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data);
|
||||||
|
|
||||||
|
g_object_get (tag, "justification-set", &val_set, NULL);
|
||||||
|
if (val_set)
|
||||||
|
{
|
||||||
|
GtkJustification justification;
|
||||||
|
g_object_get (tag, "justification", &justification, NULL);
|
||||||
|
attrib_set = add_text_int_attribute (attrib_set, ATK_TEXT_ATTR_JUSTIFICATION, justification);
|
||||||
|
}
|
||||||
|
temp_tags = temp_tags->next;
|
||||||
|
}
|
||||||
|
val_set = FALSE;
|
||||||
|
|
||||||
|
temp_tags = tags;
|
||||||
|
while (temp_tags && !val_set)
|
||||||
|
{
|
||||||
|
GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data);
|
||||||
|
GtkTextDirection direction;
|
||||||
|
|
||||||
|
g_object_get (tag, "direction", &direction, NULL);
|
||||||
|
|
||||||
|
if (direction != GTK_TEXT_DIR_NONE)
|
||||||
|
{
|
||||||
|
val_set = TRUE;
|
||||||
|
attrib_set = add_text_int_attribute (attrib_set, ATK_TEXT_ATTR_DIRECTION, direction);
|
||||||
|
}
|
||||||
|
temp_tags = temp_tags->next;
|
||||||
|
}
|
||||||
|
val_set = FALSE;
|
||||||
|
|
||||||
|
temp_tags = tags;
|
||||||
|
while (temp_tags && !val_set)
|
||||||
|
{
|
||||||
|
GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data);
|
||||||
|
|
||||||
|
g_object_get (tag, "wrap-mode-set", &val_set, NULL);
|
||||||
|
if (val_set)
|
||||||
|
{
|
||||||
|
GtkWrapMode wrap_mode;
|
||||||
|
g_object_get (tag, "wrap-mode", &wrap_mode, NULL);
|
||||||
|
attrib_set = add_text_int_attribute (attrib_set, ATK_TEXT_ATTR_WRAP_MODE, wrap_mode);
|
||||||
|
}
|
||||||
|
temp_tags = temp_tags->next;
|
||||||
|
}
|
||||||
|
val_set = FALSE;
|
||||||
|
|
||||||
|
temp_tags = tags;
|
||||||
|
while (temp_tags && !val_set)
|
||||||
|
{
|
||||||
|
GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data);
|
||||||
|
|
||||||
|
g_object_get (tag, "foreground-set", &val_set, NULL);
|
||||||
|
if (val_set)
|
||||||
|
{
|
||||||
|
GdkRGBA *rgba;
|
||||||
|
gchar *value;
|
||||||
|
|
||||||
|
g_object_get (tag, "foreground-rgba", &rgba, NULL);
|
||||||
|
value = g_strdup_printf ("%u,%u,%u",
|
||||||
|
(guint) rgba->red * 65535,
|
||||||
|
(guint) rgba->green * 65535,
|
||||||
|
(guint) rgba->blue * 65535);
|
||||||
|
gdk_rgba_free (rgba);
|
||||||
|
attrib_set = add_text_attribute (attrib_set, ATK_TEXT_ATTR_FG_COLOR, value);
|
||||||
|
}
|
||||||
|
temp_tags = temp_tags->next;
|
||||||
|
}
|
||||||
|
val_set = FALSE;
|
||||||
|
|
||||||
|
temp_tags = tags;
|
||||||
|
while (temp_tags && !val_set)
|
||||||
|
{
|
||||||
|
GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data);
|
||||||
|
|
||||||
|
g_object_get (tag, "background-set", &val_set, NULL);
|
||||||
|
if (val_set)
|
||||||
|
{
|
||||||
|
GdkRGBA *rgba;
|
||||||
|
gchar *value;
|
||||||
|
|
||||||
|
g_object_get (tag, "background-rgba", &rgba, NULL);
|
||||||
|
value = g_strdup_printf ("%u,%u,%u",
|
||||||
|
(guint) rgba->red * 65535,
|
||||||
|
(guint) rgba->green * 65535,
|
||||||
|
(guint) rgba->blue * 65535);
|
||||||
|
gdk_rgba_free (rgba);
|
||||||
|
attrib_set = add_text_attribute (attrib_set, ATK_TEXT_ATTR_BG_COLOR, value);
|
||||||
|
}
|
||||||
|
temp_tags = temp_tags->next;
|
||||||
|
}
|
||||||
|
val_set = FALSE;
|
||||||
|
|
||||||
|
temp_tags = tags;
|
||||||
|
while (temp_tags && !val_set)
|
||||||
|
{
|
||||||
|
GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data);
|
||||||
|
|
||||||
|
g_object_get (tag, "family-set", &val_set, NULL);
|
||||||
|
|
||||||
|
if (val_set)
|
||||||
|
{
|
||||||
|
gchar *value;
|
||||||
|
g_object_get (tag, "family", &value, NULL);
|
||||||
|
attrib_set = add_text_attribute (attrib_set, ATK_TEXT_ATTR_FAMILY_NAME, value);
|
||||||
|
}
|
||||||
|
temp_tags = temp_tags->next;
|
||||||
|
}
|
||||||
|
val_set = FALSE;
|
||||||
|
|
||||||
|
temp_tags = tags;
|
||||||
|
while (temp_tags && !val_set)
|
||||||
|
{
|
||||||
|
GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data);
|
||||||
|
|
||||||
|
g_object_get (tag, "language-set", &val_set, NULL);
|
||||||
|
|
||||||
|
if (val_set)
|
||||||
|
{
|
||||||
|
gchar *value;
|
||||||
|
g_object_get (tag, "language", &value, NULL);
|
||||||
|
attrib_set = add_text_attribute (attrib_set, ATK_TEXT_ATTR_LANGUAGE, value);
|
||||||
|
}
|
||||||
|
temp_tags = temp_tags->next;
|
||||||
|
}
|
||||||
|
val_set = FALSE;
|
||||||
|
|
||||||
|
temp_tags = tags;
|
||||||
|
while (temp_tags && !val_set)
|
||||||
|
{
|
||||||
|
GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data);
|
||||||
|
|
||||||
|
g_object_get (tag, "weight-set", &val_set, NULL);
|
||||||
|
|
||||||
|
if (val_set)
|
||||||
|
{
|
||||||
|
gint weight;
|
||||||
|
gchar *value;
|
||||||
|
g_object_get (tag, "weight", &weight, NULL);
|
||||||
|
value = g_strdup_printf ("%d", weight);
|
||||||
|
attrib_set = add_text_attribute (attrib_set, ATK_TEXT_ATTR_WEIGHT, value);
|
||||||
|
}
|
||||||
|
temp_tags = temp_tags->next;
|
||||||
|
}
|
||||||
|
val_set = FALSE;
|
||||||
|
|
||||||
|
/* scale is special as the effective value is the product
|
||||||
|
* of all specified values
|
||||||
|
*/
|
||||||
|
temp_tags = tags;
|
||||||
|
while (temp_tags)
|
||||||
|
{
|
||||||
|
GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data);
|
||||||
|
gboolean scale_set;
|
||||||
|
|
||||||
|
g_object_get (tag, "scale-set", &scale_set, NULL);
|
||||||
|
if (scale_set)
|
||||||
|
{
|
||||||
|
gdouble font_scale;
|
||||||
|
g_object_get (tag, "scale", &font_scale, NULL);
|
||||||
|
val_set = TRUE;
|
||||||
|
scale *= font_scale;
|
||||||
|
}
|
||||||
|
temp_tags = temp_tags->next;
|
||||||
|
}
|
||||||
|
if (val_set)
|
||||||
|
{
|
||||||
|
gchar *value;
|
||||||
|
value = g_strdup_printf ("%g", scale);
|
||||||
|
attrib_set = add_text_attribute (attrib_set, ATK_TEXT_ATTR_SCALE, value);
|
||||||
|
}
|
||||||
|
val_set = FALSE;
|
||||||
|
|
||||||
|
temp_tags = tags;
|
||||||
|
while (temp_tags && !val_set)
|
||||||
|
{
|
||||||
|
GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data);
|
||||||
|
|
||||||
|
g_object_get (tag, "size-set", &val_set, NULL);
|
||||||
|
if (val_set)
|
||||||
|
{
|
||||||
|
gint size;
|
||||||
|
gchar *value;
|
||||||
|
g_object_get (tag, "size", &size, NULL);
|
||||||
|
value = g_strdup_printf ("%i", size);
|
||||||
|
attrib_set = add_text_attribute (attrib_set, ATK_TEXT_ATTR_SIZE, value);
|
||||||
|
}
|
||||||
|
temp_tags = temp_tags->next;
|
||||||
|
}
|
||||||
|
val_set = FALSE;
|
||||||
|
|
||||||
|
temp_tags = tags;
|
||||||
|
while (temp_tags && !val_set)
|
||||||
|
{
|
||||||
|
GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data);
|
||||||
|
|
||||||
|
g_object_get (tag, "strikethrough-set", &val_set, NULL);
|
||||||
|
if (val_set)
|
||||||
|
{
|
||||||
|
gboolean strikethrough;
|
||||||
|
g_object_get (tag, "strikethrough", &strikethrough, NULL);
|
||||||
|
attrib_set = add_text_int_attribute (attrib_set, ATK_TEXT_ATTR_STRIKETHROUGH, strikethrough);
|
||||||
|
}
|
||||||
|
temp_tags = temp_tags->next;
|
||||||
|
}
|
||||||
|
val_set = FALSE;
|
||||||
|
|
||||||
|
temp_tags = tags;
|
||||||
|
while (temp_tags && !val_set)
|
||||||
|
{
|
||||||
|
GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data);
|
||||||
|
|
||||||
|
g_object_get (tag, "underline-set", &val_set, NULL);
|
||||||
|
if (val_set)
|
||||||
|
{
|
||||||
|
PangoUnderline underline;
|
||||||
|
g_object_get (tag, "underline", &underline, NULL);
|
||||||
|
attrib_set = add_text_int_attribute (attrib_set, ATK_TEXT_ATTR_UNDERLINE, underline);
|
||||||
|
}
|
||||||
|
temp_tags = temp_tags->next;
|
||||||
|
}
|
||||||
|
val_set = FALSE;
|
||||||
|
|
||||||
|
temp_tags = tags;
|
||||||
|
while (temp_tags && !val_set)
|
||||||
|
{
|
||||||
|
GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data);
|
||||||
|
|
||||||
|
g_object_get (tag, "rise-set", &val_set, NULL);
|
||||||
|
if (val_set)
|
||||||
|
{
|
||||||
|
gint rise;
|
||||||
|
gchar *value;
|
||||||
|
g_object_get (tag, "rise", &rise, NULL);
|
||||||
|
value = g_strdup_printf ("%i", rise);
|
||||||
|
attrib_set = add_text_attribute (attrib_set, ATK_TEXT_ATTR_RISE, value);
|
||||||
|
}
|
||||||
|
temp_tags = temp_tags->next;
|
||||||
|
}
|
||||||
|
val_set = FALSE;
|
||||||
|
|
||||||
|
temp_tags = tags;
|
||||||
|
while (temp_tags && !val_set)
|
||||||
|
{
|
||||||
|
GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data);
|
||||||
|
|
||||||
|
g_object_get (tag, "background-full-height-set", &val_set, NULL);
|
||||||
|
if (val_set)
|
||||||
|
{
|
||||||
|
gboolean bg_full_height;
|
||||||
|
g_object_get (tag, "background-full-height", &bg_full_height, NULL);
|
||||||
|
attrib_set = add_text_int_attribute (attrib_set, ATK_TEXT_ATTR_BG_FULL_HEIGHT, bg_full_height);
|
||||||
|
}
|
||||||
|
temp_tags = temp_tags->next;
|
||||||
|
}
|
||||||
|
val_set = FALSE;
|
||||||
|
|
||||||
|
temp_tags = tags;
|
||||||
|
while (temp_tags && !val_set)
|
||||||
|
{
|
||||||
|
GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data);
|
||||||
|
|
||||||
|
g_object_get (tag, "pixels-inside-wrap-set", &val_set, NULL);
|
||||||
|
if (val_set)
|
||||||
|
{
|
||||||
|
gint pixels;
|
||||||
|
gchar *value;
|
||||||
|
g_object_get (tag, "pixels-inside-wrap", &pixels, NULL);
|
||||||
|
value = g_strdup_printf ("%i", pixels);
|
||||||
|
attrib_set = add_text_attribute (attrib_set, ATK_TEXT_ATTR_PIXELS_INSIDE_WRAP, value);
|
||||||
|
}
|
||||||
|
temp_tags = temp_tags->next;
|
||||||
|
}
|
||||||
|
val_set = FALSE;
|
||||||
|
|
||||||
|
temp_tags = tags;
|
||||||
|
while (temp_tags && !val_set)
|
||||||
|
{
|
||||||
|
GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data);
|
||||||
|
|
||||||
|
g_object_get (tag, "pixels-below-lines-set", &val_set, NULL);
|
||||||
|
if (val_set)
|
||||||
|
{
|
||||||
|
gint pixels;
|
||||||
|
gchar *value;
|
||||||
|
g_object_get (tag, "pixels-below-lines", &pixels, NULL);
|
||||||
|
value = g_strdup_printf ("%i", pixels);
|
||||||
|
attrib_set = add_text_attribute (attrib_set, ATK_TEXT_ATTR_PIXELS_BELOW_LINES, value);
|
||||||
|
}
|
||||||
|
temp_tags = temp_tags->next;
|
||||||
|
}
|
||||||
|
val_set = FALSE;
|
||||||
|
|
||||||
|
temp_tags = tags;
|
||||||
|
while (temp_tags && !val_set)
|
||||||
|
{
|
||||||
|
GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data);
|
||||||
|
|
||||||
|
g_object_get (tag, "pixels-above-lines-set", &val_set, NULL);
|
||||||
|
if (val_set)
|
||||||
|
{
|
||||||
|
gint pixels;
|
||||||
|
gchar *value;
|
||||||
|
g_object_get (tag, "pixels-above-lines", &pixels, NULL);
|
||||||
|
value = g_strdup_printf ("%i", pixels);
|
||||||
|
attrib_set = add_text_attribute (attrib_set, ATK_TEXT_ATTR_PIXELS_ABOVE_LINES, value);
|
||||||
|
}
|
||||||
|
temp_tags = temp_tags->next;
|
||||||
|
}
|
||||||
|
val_set = FALSE;
|
||||||
|
|
||||||
|
temp_tags = tags;
|
||||||
|
while (temp_tags && !val_set)
|
||||||
|
{
|
||||||
|
GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data);
|
||||||
|
|
||||||
|
g_object_get (tag, "editable-set", &val_set, NULL);
|
||||||
|
if (val_set)
|
||||||
|
{
|
||||||
|
gboolean editable;
|
||||||
|
g_object_get (tag, "editable", &editable, NULL);
|
||||||
|
attrib_set = add_text_int_attribute (attrib_set, ATK_TEXT_ATTR_EDITABLE, editable);
|
||||||
|
}
|
||||||
|
temp_tags = temp_tags->next;
|
||||||
|
}
|
||||||
|
val_set = FALSE;
|
||||||
|
|
||||||
|
temp_tags = tags;
|
||||||
|
while (temp_tags && !val_set)
|
||||||
|
{
|
||||||
|
GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data);
|
||||||
|
|
||||||
|
g_object_get (tag, "invisible-set", &val_set, NULL);
|
||||||
|
if (val_set)
|
||||||
|
{
|
||||||
|
gboolean invisible;
|
||||||
|
g_object_get (tag, "invisible", &invisible, NULL);
|
||||||
|
attrib_set = add_text_int_attribute (attrib_set, ATK_TEXT_ATTR_INVISIBLE, invisible);
|
||||||
|
}
|
||||||
|
temp_tags = temp_tags->next;
|
||||||
|
}
|
||||||
|
val_set = FALSE;
|
||||||
|
|
||||||
|
temp_tags = tags;
|
||||||
|
while (temp_tags && !val_set)
|
||||||
|
{
|
||||||
|
GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data);
|
||||||
|
|
||||||
|
g_object_get (tag, "indent-set", &val_set, NULL);
|
||||||
|
if (val_set)
|
||||||
|
{
|
||||||
|
gint indent;
|
||||||
|
gchar *value;
|
||||||
|
g_object_get (tag, "indent", &indent, NULL);
|
||||||
|
value = g_strdup_printf ("%i", indent);
|
||||||
|
attrib_set = add_text_attribute (attrib_set, ATK_TEXT_ATTR_INDENT, value);
|
||||||
|
}
|
||||||
|
temp_tags = temp_tags->next;
|
||||||
|
}
|
||||||
|
val_set = FALSE;
|
||||||
|
|
||||||
|
temp_tags = tags;
|
||||||
|
while (temp_tags && !val_set)
|
||||||
|
{
|
||||||
|
GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data);
|
||||||
|
|
||||||
|
g_object_get (tag, "right-margin-set", &val_set, NULL);
|
||||||
|
if (val_set)
|
||||||
|
{
|
||||||
|
gint margin;
|
||||||
|
gchar *value;
|
||||||
|
g_object_get (tag, "right-margin", &margin, NULL);
|
||||||
|
value = g_strdup_printf ("%i", margin);
|
||||||
|
attrib_set = add_text_attribute (attrib_set, ATK_TEXT_ATTR_RIGHT_MARGIN, value);
|
||||||
|
}
|
||||||
|
temp_tags = temp_tags->next;
|
||||||
|
}
|
||||||
|
val_set = FALSE;
|
||||||
|
|
||||||
|
temp_tags = tags;
|
||||||
|
while (temp_tags && !val_set)
|
||||||
|
{
|
||||||
|
GtkTextTag *tag = GTK_TEXT_TAG (temp_tags->data);
|
||||||
|
|
||||||
|
g_object_get (tag, "left-margin-set", &val_set, NULL);
|
||||||
|
if (val_set)
|
||||||
|
{
|
||||||
|
gint margin;
|
||||||
|
gchar *value;
|
||||||
|
g_object_get (tag, "left-margin", &margin, NULL);
|
||||||
|
value = g_strdup_printf ("%i", margin);
|
||||||
|
attrib_set = add_text_attribute (attrib_set, ATK_TEXT_ATTR_LEFT_MARGIN, value);
|
||||||
|
}
|
||||||
|
temp_tags = temp_tags->next;
|
||||||
|
}
|
||||||
|
val_set = FALSE;
|
||||||
|
|
||||||
|
g_slist_free (tags);
|
||||||
|
return attrib_set;
|
||||||
}
|
}
|
||||||
|
|
||||||
static AtkAttributeSet *
|
static AtkAttributeSet *
|
||||||
@ -497,75 +974,75 @@ gtk_text_view_accessible_get_default_attributes (AtkText *text)
|
|||||||
|
|
||||||
if (font)
|
if (font)
|
||||||
{
|
{
|
||||||
attributes = add_text_attribute (attributes, ATK_TEXT_ATTR_STYLE,
|
attributes = add_text_int_attribute (attributes, ATK_TEXT_ATTR_STYLE,
|
||||||
pango_font_description_get_style (font));
|
pango_font_description_get_style (font));
|
||||||
|
|
||||||
attributes = add_text_attribute (attributes, ATK_TEXT_ATTR_VARIANT,
|
attributes = add_text_int_attribute (attributes, ATK_TEXT_ATTR_VARIANT,
|
||||||
pango_font_description_get_variant (font));
|
pango_font_description_get_variant (font));
|
||||||
|
|
||||||
attributes = add_text_attribute (attributes, ATK_TEXT_ATTR_STRETCH,
|
attributes = add_text_int_attribute (attributes, ATK_TEXT_ATTR_STRETCH,
|
||||||
pango_font_description_get_stretch (font));
|
pango_font_description_get_stretch (font));
|
||||||
|
|
||||||
value = g_strdup (pango_font_description_get_family (font));
|
value = g_strdup (pango_font_description_get_family (font));
|
||||||
attributes = gail_misc_add_attribute (attributes, ATK_TEXT_ATTR_FAMILY_NAME, value);
|
attributes = add_text_attribute (attributes, ATK_TEXT_ATTR_FAMILY_NAME, value);
|
||||||
|
|
||||||
value = g_strdup_printf ("%d", pango_font_description_get_weight (font));
|
value = g_strdup_printf ("%d", pango_font_description_get_weight (font));
|
||||||
attributes = gail_misc_add_attribute (attributes, ATK_TEXT_ATTR_WEIGHT, value);
|
attributes = add_text_attribute (attributes, ATK_TEXT_ATTR_WEIGHT, value);
|
||||||
|
|
||||||
value = g_strdup_printf ("%i", pango_font_description_get_size (font) / PANGO_SCALE);
|
value = g_strdup_printf ("%i", pango_font_description_get_size (font) / PANGO_SCALE);
|
||||||
attributes = gail_misc_add_attribute (attributes, ATK_TEXT_ATTR_SIZE, value);
|
attributes = add_text_attribute (attributes, ATK_TEXT_ATTR_SIZE, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
attributes = add_text_attribute (attributes, ATK_TEXT_ATTR_JUSTIFICATION, text_attrs->justification);
|
attributes = add_text_int_attribute (attributes, ATK_TEXT_ATTR_JUSTIFICATION, text_attrs->justification);
|
||||||
attributes = add_text_attribute (attributes, ATK_TEXT_ATTR_DIRECTION, text_attrs->direction);
|
attributes = add_text_int_attribute (attributes, ATK_TEXT_ATTR_DIRECTION, text_attrs->direction);
|
||||||
attributes = add_text_attribute (attributes, ATK_TEXT_ATTR_WRAP_MODE, text_attrs->wrap_mode);
|
attributes = add_text_int_attribute (attributes, ATK_TEXT_ATTR_WRAP_MODE, text_attrs->wrap_mode);
|
||||||
attributes = add_text_attribute (attributes, ATK_TEXT_ATTR_EDITABLE, text_attrs->editable);
|
attributes = add_text_int_attribute (attributes, ATK_TEXT_ATTR_EDITABLE, text_attrs->editable);
|
||||||
attributes = add_text_attribute (attributes, ATK_TEXT_ATTR_INVISIBLE, text_attrs->invisible);
|
attributes = add_text_int_attribute (attributes, ATK_TEXT_ATTR_INVISIBLE, text_attrs->invisible);
|
||||||
attributes = add_text_attribute (attributes, ATK_TEXT_ATTR_BG_FULL_HEIGHT, text_attrs->bg_full_height);
|
attributes = add_text_int_attribute (attributes, ATK_TEXT_ATTR_BG_FULL_HEIGHT, text_attrs->bg_full_height);
|
||||||
|
|
||||||
attributes = add_text_attribute (attributes, ATK_TEXT_ATTR_STRIKETHROUGH,
|
attributes = add_text_int_attribute (attributes, ATK_TEXT_ATTR_STRIKETHROUGH,
|
||||||
text_attrs->appearance.strikethrough);
|
text_attrs->appearance.strikethrough);
|
||||||
attributes = add_text_attribute (attributes, ATK_TEXT_ATTR_UNDERLINE,
|
attributes = add_text_int_attribute (attributes, ATK_TEXT_ATTR_UNDERLINE,
|
||||||
text_attrs->appearance.underline);
|
text_attrs->appearance.underline);
|
||||||
|
|
||||||
value = g_strdup_printf ("%u,%u,%u",
|
value = g_strdup_printf ("%u,%u,%u",
|
||||||
text_attrs->appearance.bg_color.red,
|
text_attrs->appearance.bg_color.red,
|
||||||
text_attrs->appearance.bg_color.green,
|
text_attrs->appearance.bg_color.green,
|
||||||
text_attrs->appearance.bg_color.blue);
|
text_attrs->appearance.bg_color.blue);
|
||||||
attributes = gail_misc_add_attribute (attributes, ATK_TEXT_ATTR_BG_COLOR, value);
|
attributes = add_text_attribute (attributes, ATK_TEXT_ATTR_BG_COLOR, value);
|
||||||
|
|
||||||
value = g_strdup_printf ("%u,%u,%u",
|
value = g_strdup_printf ("%u,%u,%u",
|
||||||
text_attrs->appearance.fg_color.red,
|
text_attrs->appearance.fg_color.red,
|
||||||
text_attrs->appearance.fg_color.green,
|
text_attrs->appearance.fg_color.green,
|
||||||
text_attrs->appearance.fg_color.blue);
|
text_attrs->appearance.fg_color.blue);
|
||||||
attributes = gail_misc_add_attribute (attributes, ATK_TEXT_ATTR_FG_COLOR, value);
|
attributes = add_text_attribute (attributes, ATK_TEXT_ATTR_FG_COLOR, value);
|
||||||
|
|
||||||
value = g_strdup_printf ("%g", text_attrs->font_scale);
|
value = g_strdup_printf ("%g", text_attrs->font_scale);
|
||||||
attributes = gail_misc_add_attribute (attributes, ATK_TEXT_ATTR_SCALE, value);
|
attributes = add_text_attribute (attributes, ATK_TEXT_ATTR_SCALE, value);
|
||||||
|
|
||||||
value = g_strdup ((gchar *)(text_attrs->language));
|
value = g_strdup ((gchar *)(text_attrs->language));
|
||||||
attributes = gail_misc_add_attribute (attributes, ATK_TEXT_ATTR_LANGUAGE, value);
|
attributes = add_text_attribute (attributes, ATK_TEXT_ATTR_LANGUAGE, value);
|
||||||
|
|
||||||
value = g_strdup_printf ("%i", text_attrs->appearance.rise);
|
value = g_strdup_printf ("%i", text_attrs->appearance.rise);
|
||||||
attributes = gail_misc_add_attribute (attributes, ATK_TEXT_ATTR_RISE, value);
|
attributes = add_text_attribute (attributes, ATK_TEXT_ATTR_RISE, value);
|
||||||
|
|
||||||
value = g_strdup_printf ("%i", text_attrs->pixels_inside_wrap);
|
value = g_strdup_printf ("%i", text_attrs->pixels_inside_wrap);
|
||||||
attributes = gail_misc_add_attribute (attributes, ATK_TEXT_ATTR_PIXELS_INSIDE_WRAP, value);
|
attributes = add_text_attribute (attributes, ATK_TEXT_ATTR_PIXELS_INSIDE_WRAP, value);
|
||||||
|
|
||||||
value = g_strdup_printf ("%i", text_attrs->pixels_below_lines);
|
value = g_strdup_printf ("%i", text_attrs->pixels_below_lines);
|
||||||
attributes = gail_misc_add_attribute (attributes, ATK_TEXT_ATTR_PIXELS_BELOW_LINES, value);
|
attributes = add_text_attribute (attributes, ATK_TEXT_ATTR_PIXELS_BELOW_LINES, value);
|
||||||
|
|
||||||
value = g_strdup_printf ("%i", text_attrs->pixels_above_lines);
|
value = g_strdup_printf ("%i", text_attrs->pixels_above_lines);
|
||||||
attributes = gail_misc_add_attribute (attributes, ATK_TEXT_ATTR_PIXELS_ABOVE_LINES, value);
|
attributes = add_text_attribute (attributes, ATK_TEXT_ATTR_PIXELS_ABOVE_LINES, value);
|
||||||
|
|
||||||
value = g_strdup_printf ("%i", text_attrs->indent);
|
value = g_strdup_printf ("%i", text_attrs->indent);
|
||||||
attributes = gail_misc_add_attribute (attributes, ATK_TEXT_ATTR_INDENT, value);
|
attributes = add_text_attribute (attributes, ATK_TEXT_ATTR_INDENT, value);
|
||||||
|
|
||||||
value = g_strdup_printf ("%i", text_attrs->left_margin);
|
value = g_strdup_printf ("%i", text_attrs->left_margin);
|
||||||
attributes = gail_misc_add_attribute (attributes, ATK_TEXT_ATTR_LEFT_MARGIN, value);
|
attributes = add_text_attribute (attributes, ATK_TEXT_ATTR_LEFT_MARGIN, value);
|
||||||
|
|
||||||
value = g_strdup_printf ("%i", text_attrs->right_margin);
|
value = g_strdup_printf ("%i", text_attrs->right_margin);
|
||||||
attributes = gail_misc_add_attribute (attributes, ATK_TEXT_ATTR_RIGHT_MARGIN, value);
|
attributes = add_text_attribute (attributes, ATK_TEXT_ATTR_RIGHT_MARGIN, value);
|
||||||
|
|
||||||
gtk_text_attributes_unref (text_attrs);
|
gtk_text_attributes_unref (text_attrs);
|
||||||
return attributes;
|
return attributes;
|
||||||
|
|||||||
Reference in New Issue
Block a user