mirror of
https://github.com/brl/mutter.git
synced 2024-12-24 12:02:04 +00:00
text: Consider text direction when computing layout offsets
Currently this is only the case when the actor's x-expand/x-align flags have been set and clutter_text_compute_layout_offsets() is used. https://bugzilla.gnome.org/show_bug.cgi?id=705779
This commit is contained in:
parent
da3e6988ad
commit
986e46dc66
@ -2288,6 +2288,7 @@ clutter_text_paint (ClutterActor *self)
|
|||||||
{
|
{
|
||||||
PangoRectangle logical_rect = { 0, };
|
PangoRectangle logical_rect = { 0, };
|
||||||
gint actor_width, text_width;
|
gint actor_width, text_width;
|
||||||
|
gboolean rtl;
|
||||||
|
|
||||||
pango_layout_get_extents (layout, NULL, &logical_rect);
|
pango_layout_get_extents (layout, NULL, &logical_rect);
|
||||||
|
|
||||||
@ -2300,17 +2301,19 @@ clutter_text_paint (ClutterActor *self)
|
|||||||
- 2 * TEXT_PADDING;
|
- 2 * TEXT_PADDING;
|
||||||
text_width = logical_rect.width / PANGO_SCALE;
|
text_width = logical_rect.width / PANGO_SCALE;
|
||||||
|
|
||||||
|
rtl = clutter_actor_get_text_direction (self) == CLUTTER_TEXT_DIRECTION_RTL;
|
||||||
|
|
||||||
if (actor_width < text_width)
|
if (actor_width < text_width)
|
||||||
{
|
{
|
||||||
gint cursor_x = clutter_rect_get_x (&priv->cursor_rect);
|
gint cursor_x = clutter_rect_get_x (&priv->cursor_rect);
|
||||||
|
|
||||||
if (priv->position == -1)
|
if (priv->position == -1)
|
||||||
{
|
{
|
||||||
text_x = actor_width - text_width;
|
text_x = rtl ? TEXT_PADDING : actor_width - text_width;
|
||||||
}
|
}
|
||||||
else if (priv->position == 0)
|
else if (priv->position == 0)
|
||||||
{
|
{
|
||||||
text_x = TEXT_PADDING;
|
text_x = rtl ? actor_width - text_width : TEXT_PADDING;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -2326,7 +2329,7 @@ clutter_text_paint (ClutterActor *self)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
text_x = TEXT_PADDING;
|
text_x = rtl ? actor_width - text_width : TEXT_PADDING;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (!priv->editable && !(priv->wrap && priv->ellipsize))
|
else if (!priv->editable && !(priv->wrap && priv->ellipsize))
|
||||||
|
Loading…
Reference in New Issue
Block a user