From 986e46dc6677a708cd3db8abaf28f09cd2007c4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Tue, 10 Sep 2013 20:56:09 +0200 Subject: [PATCH] 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 --- clutter/clutter-text.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/clutter/clutter-text.c b/clutter/clutter-text.c index 1f5c3a4d7..03090f69e 100644 --- a/clutter/clutter-text.c +++ b/clutter/clutter-text.c @@ -2288,6 +2288,7 @@ clutter_text_paint (ClutterActor *self) { PangoRectangle logical_rect = { 0, }; gint actor_width, text_width; + gboolean rtl; pango_layout_get_extents (layout, NULL, &logical_rect); @@ -2300,17 +2301,19 @@ clutter_text_paint (ClutterActor *self) - 2 * TEXT_PADDING; text_width = logical_rect.width / PANGO_SCALE; + rtl = clutter_actor_get_text_direction (self) == CLUTTER_TEXT_DIRECTION_RTL; + if (actor_width < text_width) { gint cursor_x = clutter_rect_get_x (&priv->cursor_rect); if (priv->position == -1) { - text_x = actor_width - text_width; + text_x = rtl ? TEXT_PADDING : actor_width - text_width; } else if (priv->position == 0) { - text_x = TEXT_PADDING; + text_x = rtl ? actor_width - text_width : TEXT_PADDING; } else { @@ -2326,7 +2329,7 @@ clutter_text_paint (ClutterActor *self) } else { - text_x = TEXT_PADDING; + text_x = rtl ? actor_width - text_width : TEXT_PADDING; } } else if (!priv->editable && !(priv->wrap && priv->ellipsize))