mirror of
https://github.com/brl/mutter.git
synced 2025-03-25 04:33:52 +00:00
a11y: use actor color if no fgcolor found in pango attributes
This commit is contained in:
parent
49d4317420
commit
11efaf8297
@ -1249,6 +1249,25 @@ _cally_misc_layout_atk_attributes_from_pango (AtkAttributeSet *attrib_set,
|
|||||||
return attrib_set;
|
return attrib_set;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static AtkAttributeSet*
|
||||||
|
_cally_misc_add_actor_color_to_attribute_set (AtkAttributeSet *attrib_set,
|
||||||
|
ClutterText *clutter_text)
|
||||||
|
{
|
||||||
|
ClutterColor color;
|
||||||
|
gchar *value;
|
||||||
|
|
||||||
|
clutter_text_get_color (clutter_text, &color);
|
||||||
|
value = g_strdup_printf ("%u,%u,%u",
|
||||||
|
(guint) (color.red * 65535 / 255),
|
||||||
|
(guint) (color.green * 65535 / 255),
|
||||||
|
(guint) (color.blue * 65535 / 255));
|
||||||
|
attrib_set = _cally_misc_add_attribute (attrib_set,
|
||||||
|
ATK_TEXT_ATTR_FG_COLOR,
|
||||||
|
value);
|
||||||
|
return attrib_set;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* _cally_misc_layout_get_run_attributes:
|
* _cally_misc_layout_get_run_attributes:
|
||||||
*
|
*
|
||||||
@ -1278,38 +1297,45 @@ _cally_misc_layout_get_run_attributes (AtkAttributeSet *attrib_set,
|
|||||||
{
|
{
|
||||||
*start_offset = 0;
|
*start_offset = 0;
|
||||||
*end_offset = len;
|
*end_offset = len;
|
||||||
|
_cally_misc_add_actor_color_to_attribute_set (attrib_set, clutter_text);
|
||||||
}
|
}
|
||||||
iter = pango_attr_list_get_iterator (attr);
|
else
|
||||||
/* Get invariant range offsets */
|
|
||||||
/* If offset out of range, set offset in range */
|
|
||||||
if (offset > len)
|
|
||||||
offset = len;
|
|
||||||
else if (offset < 0)
|
|
||||||
offset = 0;
|
|
||||||
|
|
||||||
index = g_utf8_offset_to_pointer (text, offset) - text;
|
|
||||||
pango_attr_iterator_range (iter, &start_index, &end_index);
|
|
||||||
while (is_next)
|
|
||||||
{
|
{
|
||||||
if (index >= start_index && index < end_index)
|
iter = pango_attr_list_get_iterator (attr);
|
||||||
{
|
/* Get invariant range offsets */
|
||||||
*start_offset = g_utf8_pointer_to_offset (text,
|
/* If offset out of range, set offset in range */
|
||||||
text + start_index);
|
if (offset > len)
|
||||||
if (end_index == G_MAXINT)
|
offset = len;
|
||||||
/* Last iterator */
|
else if (offset < 0)
|
||||||
end_index = len;
|
offset = 0;
|
||||||
|
|
||||||
*end_offset = g_utf8_pointer_to_offset (text,
|
index = g_utf8_offset_to_pointer (text, offset) - text;
|
||||||
text + end_index);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
is_next = pango_attr_iterator_next (iter);
|
|
||||||
pango_attr_iterator_range (iter, &start_index, &end_index);
|
pango_attr_iterator_range (iter, &start_index, &end_index);
|
||||||
|
while (is_next)
|
||||||
|
{
|
||||||
|
if (index >= start_index && index < end_index)
|
||||||
|
{
|
||||||
|
*start_offset = g_utf8_pointer_to_offset (text,
|
||||||
|
text + start_index);
|
||||||
|
if (end_index == G_MAXINT)
|
||||||
|
/* Last iterator */
|
||||||
|
end_index = len;
|
||||||
|
|
||||||
|
*end_offset = g_utf8_pointer_to_offset (text,
|
||||||
|
text + end_index);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
is_next = pango_attr_iterator_next (iter);
|
||||||
|
pango_attr_iterator_range (iter, &start_index, &end_index);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Get attributes */
|
||||||
|
attrib_set = _cally_misc_layout_atk_attributes_from_pango (attrib_set, iter);
|
||||||
|
pango_attr_iterator_destroy (iter);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Get attributes */
|
if (!_cally_misc_find_atk_attribute (attrib_set, ATK_TEXT_ATTR_FG_COLOR))
|
||||||
attrib_set = _cally_misc_layout_atk_attributes_from_pango (attrib_set, iter);
|
attrib_set = _cally_misc_add_actor_color_to_attribute_set (attrib_set, clutter_text);
|
||||||
pango_attr_iterator_destroy (iter);
|
|
||||||
|
|
||||||
return attrib_set;
|
return attrib_set;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user