herdsman pushed a commit to branch efl-1.12.

http://git.enlightenment.org/core/efl.git/commit/?id=0dc58467a44333e67ffe24b5a9cacb6757c459b0

commit 0dc58467a44333e67ffe24b5a9cacb6757c459b0
Author: Thiep Ha <thiep...@samsung.com>
Date:   Wed Nov 26 10:18:49 2014 +0200

    textblock: correct text position for RTL text with margins
    
    Summary:
    If a RTL textblock has right margin, text is wrongly placed
    (right margin is moved to left).
    This patch fixes this issue.
    Test cases are also added to test text position with margins.
    
    @fix
    
    Reviewers: tasn, herdsman
    
    Subscribers: woohyun, cedric
    
    Differential Revision: https://phab.enlightenment.org/D1691
---
 src/lib/evas/canvas/evas_object_textblock.c |  4 ++--
 src/tests/evas/evas_test_textblock.c        | 33 +++++++++++++++++++++++++++++
 2 files changed, 35 insertions(+), 2 deletions(-)

diff --git a/src/lib/evas/canvas/evas_object_textblock.c 
b/src/lib/evas/canvas/evas_object_textblock.c
index 2534f20..52a5954 100644
--- a/src/lib/evas/canvas/evas_object_textblock.c
+++ b/src/lib/evas/canvas/evas_object_textblock.c
@@ -3397,8 +3397,8 @@ loop_advance:
         /* c->o->style_pad.r is already included in the line width, so it's
          * not used in this calculation. . */
         c->ln->x = c->marginl + c->o->style_pad.l +
-           ((c->w - c->ln->w -
-             c->o->style_pad.l - c->marginl) * _layout_line_align_get(c));
+           ((c->w - c->ln->w - c->o->style_pad.l -
+             c->marginl - c->marginr) * _layout_line_align_get(c));
      }
    else
      {
diff --git a/src/tests/evas/evas_test_textblock.c 
b/src/tests/evas/evas_test_textblock.c
index 928bbd3..1c071bd 100644
--- a/src/tests/evas/evas_test_textblock.c
+++ b/src/tests/evas/evas_test_textblock.c
@@ -1954,6 +1954,39 @@ START_TEST(evas_textblock_various)
    evas_textblock_cursor_pos_set(cur, 0);
    evas_textblock_cursor_char_delete(cur);
 
+   /* Check margins' position */
+     {
+        Evas_Coord nw, nh, lx, lw;
+
+        evas_object_textblock_text_markup_set(tb, "This is a test");
+        evas_object_textblock_size_native_get(tb, &nw, &nh);
+        evas_object_resize(tb, nw, nh);
+        evas_object_textblock_line_number_geometry_get(tb, 0, &lx, NULL, &lw, 
NULL);
+        ck_assert_int_eq(lx, 0);
+        ck_assert_int_eq(lx + lw, nw);
+
+        evas_object_textblock_text_markup_set(tb, "<left_margin=10 
right_margin=5>This is a test</>");
+        evas_object_textblock_size_native_get(tb, &nw, &nh);
+        evas_object_resize(tb, nw, nh);
+        evas_object_textblock_line_number_geometry_get(tb, 0, &lx, NULL, &lw, 
NULL);
+        ck_assert_int_eq(lx, 10);
+        ck_assert_int_eq(lx + lw + 5, nw);
+
+        evas_object_textblock_text_markup_set(tb, "עוד פסקה");
+        evas_object_textblock_size_native_get(tb, &nw, &nh);
+        evas_object_resize(tb, nw, nh);
+        evas_object_textblock_line_number_geometry_get(tb, 0, &lx, NULL, &lw, 
NULL);
+        ck_assert_int_eq(lx, 0);
+        ck_assert_int_eq(lx + lw, nw);
+
+        evas_object_textblock_text_markup_set(tb, "<left_margin=10 
right_margin=5>עוד פסקה</>");
+        evas_object_textblock_size_native_get(tb, &nw, &nh);
+        evas_object_resize(tb, nw, nh);
+        evas_object_textblock_line_number_geometry_get(tb, 0, &lx, NULL, &lw, 
NULL);
+        ck_assert_int_eq(lx, 10);
+        ck_assert_int_eq(lx + lw + 5, nw);
+     }
+
    /* Super big one line item. */
      {
 #define CNT 10000

-- 


Reply via email to