Evas.Table: Apply mirrored correctly when align is set
authorJeeyong Um <conr2d@gmail.com>
Wed, 19 Apr 2017 07:47:39 +0000 (16:47 +0900)
committerJean-Philippe Andre <jp.andre@samsung.com>
Wed, 19 Apr 2017 07:47:39 +0000 (16:47 +0900)
Summary:
When table items are left aligned and mirrored is set, items should be placed
from the right side, but align is not changed. (still left-aligned)

@fix

Test Plan: make and run attached example

Reviewers: cedric, jpeg

Subscribers: thiepha, woohyun

Differential Revision: https://phab.enlightenment.org/D4758

src/lib/evas/canvas/evas_object_table.c

index 820e8d2..103d3a8 100644 (file)
@@ -785,12 +785,14 @@ _evas_object_table_calculate_layout_regular(Evas_Object *o, Evas_Table_Data *pri
    Eina_List *l;
    Evas_Coord *cols = NULL, *rows = NULL;
    Evas_Coord x, y, w, h;
+   Evas_Coord totw;
 
    c = priv->cache;
    if (!c) return;
 
    c->ref++;
    evas_object_geometry_get(o, &x, &y, &w, &h);
+   totw = w;
 
    /* handle horizontal */
    if ((c->total.expands.h <= 0) || (c->total.min.w >= w))
@@ -857,7 +859,7 @@ _evas_object_table_calculate_layout_regular(Evas_Object *o, Evas_Table_Data *pri
 
         if (priv->is_mirrored)
           {
-             evas_object_move(opt->obj, x + w - (cx - x + cw), cy);
+             evas_object_move(opt->obj, x + w + 2 * (0.5 - priv->align.h) * (totw - w) - (cx - x + cw), cy);
           }
         else
           {