efl_pack_table: rename table_position to cell_column, cell_row

Summary:
Rename ambiguous `table_position` property. it is actually related to child
column, row.

ref T7900

Reviewers: segfaultxavi, zmike

Reviewed By: segfaultxavi

Subscribers: cedric, #reviewers, #committers

Tags: #efl_api

Maniphest Tasks: T7900

Differential Revision: https://phab.enlightenment.org/D9611
This commit is contained in:
Yeongjong Lee 2019-08-27 12:46:03 +02:00 committed by Xavi Artigas
parent 4d84794f1c
commit 9c52484caf
12 changed files with 202 additions and 28 deletions

View File

@ -138,7 +138,8 @@ child_evt_cb(void *data, const Efl_Event *event)
int col, row, colspan, rowspan;
char buf[64];
efl_pack_table_position_get(event->object, it, &col, &row, &colspan, &rowspan);
efl_pack_table_cell_column_get(event->object, it, &col, &colspan);
efl_pack_table_cell_row_get(event->object, it, &row, &rowspan);
if (event->desc == EFL_CONTAINER_EVENT_CONTENT_ADDED)
sprintf(buf, "pack %d,%d %dx%d", col, row, colspan, rowspan);
else
@ -168,7 +169,8 @@ _custom_layout_update(Eo *pack, void *_pd EINA_UNUSED)
it = efl_content_iterate(pack);
EINA_ITERATOR_FOREACH(it, item)
{
if (efl_pack_table_position_get(pack, item, &c, &r, &cs, &rs))
if (efl_pack_table_cell_column_get(pack, item, &c, &cs) &&
efl_pack_table_cell_row_get(pack, item, &r, &rs))
{
Eina_Rect m;

View File

@ -86,10 +86,8 @@ _ch_table(void *data, const Efl_Event *ev)
Eo *table = data;
int x, y, w, h;
// FIXME: old elm_table API doesn't need table object
//elm_grid_pack_get(obj, &x, &y, &w, &h);
//elm_grid_pack_set(obj, x - 1, y - 1, w + 2, h + 2);
efl_pack_table_position_get(table, ev->object, &x, &y, &w, &h);
efl_pack_table_cell_column_get(table, ev->object, &x, &w);
efl_pack_table_cell_row_get(table, ev->object, &y, &h);
efl_pack_table(table, ev->object, x - 1, y - 1, w + 2, h + 2);
}

View File

@ -95,7 +95,10 @@ EDJE_PART_INVALID_CONST(Efl_Ui_Layout_Orientation, 0, efl_ui_layout_orientation_
EDJE_PART_INVALID(Eina_Bool, 0, efl_pack_table, _efl_canvas_layout_part_invalid_efl_pack_table_pack_table, Efl_Gfx_Entity *subobj, int col, int row, int colspan, int rowspan)
EDJE_PART_INVALID(Efl_Gfx_Entity *, 0, efl_pack_table_content_get, _efl_canvas_layout_part_invalid_efl_pack_table_table_content_get, int col, int row)
EDJE_PART_INVALID(Eina_Iterator *, 0, efl_pack_table_contents_get, _efl_canvas_layout_part_invalid_efl_pack_table_table_contents_get, int col, int row, Eina_Bool below)
EDJE_PART_INVALID_CONST(Eina_Bool, 0, efl_pack_table_position_get, _efl_canvas_layout_part_invalid_efl_pack_table_table_position_get, Efl_Gfx_Entity *subobj, int *col, int *row, int *colspan, int *rowspan)
EDJE_PART_INVALID_CONST(Eina_Bool, 0, efl_pack_table_cell_column_get, _efl_canvas_layout_part_invalid_efl_pack_table_table_cell_column_get, Efl_Gfx_Entity *subobj, int *col, int *colspan)
EDJE_PART_INVALID_VOID(efl_pack_table_cell_column_set, _efl_canvas_layout_part_invalid_efl_pack_table_table_cell_column_set, Efl_Gfx_Entity *subobj, int col, int colspan)
EDJE_PART_INVALID_CONST(Eina_Bool, 0, efl_pack_table_cell_row_get, _efl_canvas_layout_part_invalid_efl_pack_table_table_cell_row_get, Efl_Gfx_Entity *subobj, int *row, int *rowspan)
EDJE_PART_INVALID_VOID(efl_pack_table_cell_row_set, _efl_canvas_layout_part_invalid_efl_pack_table_table_cell_row_set, Efl_Gfx_Entity *subobj, int row, int rowspan)
EDJE_PART_INVALID_VOID_CONST(efl_pack_table_size_get, _efl_canvas_layout_part_invalid_efl_pack_table_table_size_get, int *cols, int *rows)
EDJE_PART_INVALID_CONST(int, 0, efl_pack_table_columns_get, _efl_canvas_layout_part_invalid_efl_pack_table_table_columns_get)
EDJE_PART_INVALID_CONST(int, 0, efl_pack_table_rows_get, _efl_canvas_layout_part_invalid_efl_pack_table_table_rows_get)

View File

@ -163,21 +163,53 @@ _efl_canvas_layout_part_table_efl_pack_table_table_contents_get(Eo *obj, void *_
}
EOLIAN static Eina_Bool
_efl_canvas_layout_part_table_efl_pack_table_table_position_get(const Eo *obj, void *_pd EINA_UNUSED, Efl_Gfx_Entity * subobj, int *col, int *row, int *colspan, int *rowspan)
_efl_canvas_layout_part_table_efl_pack_table_table_cell_column_get(const Eo *obj, void *_pd EINA_UNUSED, Efl_Gfx_Entity * subobj, int *col, int *colspan)
{
unsigned short c, r, cs, rs;
unsigned short c, cs;
Eina_Bool ret;
PROXY_DATA_GET(obj, pd);
ret = evas_object_table_pack_get(pd->rp->object, subobj, &c, &r, &cs, &rs);
ret = evas_object_table_pack_get(pd->rp->object, subobj, &c, NULL, &cs, NULL);
if (col) *col = c;
if (row) *row = r;
if (colspan) *colspan = cs;
return ret;
}
EOLIAN static void
_efl_canvas_layout_part_table_efl_pack_table_table_cell_column_set(Eo *obj, void *_pd EINA_UNUSED, Efl_Gfx_Entity * subobj, int col, int colspan)
{
unsigned short r, rs;
PROXY_DATA_GET(obj, pd);
evas_object_table_pack_get(pd->rp->object, subobj, NULL, &r, NULL, &rs);
evas_object_table_pack(pd->rp->object, subobj, col, r, colspan, rs);
}
EOLIAN static Eina_Bool
_efl_canvas_layout_part_table_efl_pack_table_table_cell_row_get(const Eo *obj, void *_pd EINA_UNUSED, Efl_Gfx_Entity * subobj, int *row, int *rowspan)
{
unsigned short r, rs;
Eina_Bool ret;
PROXY_DATA_GET(obj, pd);
ret = evas_object_table_pack_get(pd->rp->object, subobj, NULL, &r, NULL, &rs);
if (row) *row = r;
if (rowspan) *rowspan = rs;
return ret;
}
EOLIAN static void
_efl_canvas_layout_part_table_efl_pack_table_table_cell_row_set(Eo *obj, void *_pd EINA_UNUSED, Efl_Gfx_Entity * subobj, int row, int rowspan)
{
unsigned short c, cs;
PROXY_DATA_GET(obj, pd);
evas_object_table_pack_get(pd->rp->object, subobj, &c, NULL, &cs, NULL);
evas_object_table_pack(pd->rp->object, subobj, c, row, cs, rowspan);
}
/* Legacy API implementation */
#ifdef DEGUG

View File

@ -63,7 +63,8 @@ class @beta Efl.Canvas.Layout_Part_Invalid extends Efl.Canvas.Layout_Part implem
Efl.Pack_Table.pack_table;
Efl.Pack_Table.table_content_get;
Efl.Pack_Table.table_contents_get;
Efl.Pack_Table.table_position { get; }
Efl.Pack_Table.table_cell_column { get; set; }
Efl.Pack_Table.table_cell_row { get; set; }
Efl.Pack_Table.table_size { get; }
Efl.Pack_Table.table_columns { get; }
Efl.Pack_Table.table_rows { get; }

View File

@ -15,7 +15,8 @@ class @beta Efl.Canvas.Layout_Part_Table extends Efl.Canvas.Layout_Part implemen
Efl.Pack_Table.pack_table;
Efl.Pack_Table.table_content_get;
Efl.Pack_Table.table_contents_get;
Efl.Pack_Table.table_position { get; }
Efl.Pack_Table.table_cell_column { get; set; }
Efl.Pack_Table.table_cell_row { get; set; }
Efl.Pack_Table.table_size { get; }
Efl.Pack_Table.table_columns { get; }
Efl.Pack_Table.table_rows { get; }

View File

@ -40,16 +40,27 @@ interface @beta Efl.Pack_Table extends Efl.Pack
@in row: int; [[Row number]]
}
}
@property table_position {
[[Position and span of the $subobj in this container, may be modified to move the $subobj]]
@property table_cell_column {
[[column of the $subobj in this container.]]
set {}
get { return: bool; [[Returns false if item is not a child]] }
keys {
subobj: Efl.Gfx.Entity; [[Child object]]
}
values {
col: int; [[Column number]]
row: int; [[Row number]]
colspan: int; [[Column span]]
}
}
@property table_cell_row {
[[row of the $subobj in this container.]]
set {}
get { return: bool; [[Returns false if item is not a child]] }
keys {
subobj: Efl.Gfx.Entity; [[Child object]]
}
values {
row: int; [[Row number]]
rowspan: int; [[Row span]]
}
}

View File

@ -322,24 +322,65 @@ _efl_ui_layout_part_table_efl_pack_table_table_contents_get(Eo *obj EINA_UNUSED,
}
EOLIAN static Eina_Bool
_efl_ui_layout_part_table_efl_pack_table_table_position_get(const Eo *obj EINA_UNUSED, Efl_Ui_Layout_Table_Data *pd, Efl_Gfx_Entity * subobj, int *col, int *row, int *colspan, int *rowspan)
_efl_ui_layout_part_table_efl_pack_table_table_cell_column_get(const Eo *obj EINA_UNUSED, Efl_Ui_Layout_Table_Data *pd, Efl_Gfx_Entity * subobj, int *col, int *colspan)
{
unsigned short c, r, cs, rs;
unsigned short c, cs;
Eina_Bool ret;
edje_object_freeze(pd->obj);
Eo *pack = (Eo *) edje_object_part_object_get(pd->obj, pd->part);
edje_object_thaw(pd->obj);
ret = evas_object_table_pack_get(pack, subobj, &c, &r, &cs, &rs);
ret = evas_object_table_pack_get(pack, subobj, &c, NULL, &cs, NULL);
if (col) *col = c;
if (row) *row = r;
if (colspan) *colspan = cs;
return ret;
}
EOLIAN static void
_efl_ui_layout_part_table_efl_pack_table_table_cell_column_set(Eo *obj EINA_UNUSED, Efl_Ui_Layout_Table_Data *pd, Efl_Gfx_Entity * subobj, int col, int colspan)
{
unsigned short r, rs;
edje_object_freeze(pd->obj);
Eo *pack = (Eo *) edje_object_part_object_get(pd->obj, pd->part);
edje_object_thaw(pd->obj);
evas_object_table_pack_get(pack, subobj, NULL, &r, NULL, &rs);
evas_object_table_pack(pack, subobj, col, r, colspan, rs);
}
EOLIAN static Eina_Bool
_efl_ui_layout_part_table_efl_pack_table_table_cell_row_get(const Eo *obj EINA_UNUSED, Efl_Ui_Layout_Table_Data *pd, Efl_Gfx_Entity * subobj, int *row, int *rowspan)
{
unsigned short r, rs;
Eina_Bool ret;
edje_object_freeze(pd->obj);
Eo *pack = (Eo *) edje_object_part_object_get(pd->obj, pd->part);
edje_object_thaw(pd->obj);
ret = evas_object_table_pack_get(pack, subobj, NULL, &r, NULL, &rs);
if (row) *row = r;
if (rowspan) *rowspan = rs;
return ret;
}
EOLIAN static void
_efl_ui_layout_part_table_efl_pack_table_table_cell_row_set(Eo *obj EINA_UNUSED, Efl_Ui_Layout_Table_Data *pd, Efl_Gfx_Entity * subobj, int row, int rowspan)
{
unsigned short c, cs;
edje_object_freeze(pd->obj);
Eo *pack = (Eo *) edje_object_part_object_get(pd->obj, pd->part);
edje_object_thaw(pd->obj);
evas_object_table_pack_get(pack, subobj, &c, NULL, &cs, NULL);
evas_object_table_pack(pack, subobj, c, row, cs, rowspan);
}
EOLIAN static void
_efl_ui_layout_part_table_efl_pack_table_table_size_get(const Eo *obj EINA_UNUSED, Efl_Ui_Layout_Table_Data *pd, int *cols, int *rows)
{

View File

@ -27,7 +27,8 @@ class @beta Efl.Ui.Layout_Part_Table extends Efl.Object implements Efl.Pack_Tabl
Efl.Pack_Table.pack_table;
Efl.Pack_Table.table_content_get;
Efl.Pack_Table.table_contents_get;
Efl.Pack_Table.table_position { get; }
Efl.Pack_Table.table_cell_column { get; set; }
Efl.Pack_Table.table_cell_row { get; set; }
Efl.Pack_Table.table_size { get; }
Efl.Pack_Table.table_columns { get; }
Efl.Pack_Table.table_rows { get; }

View File

@ -383,9 +383,9 @@ _efl_ui_table_efl_pack_table_pack_table(Eo *obj, Efl_Ui_Table_Data *pd,
}
EOLIAN static Eina_Bool
_efl_ui_table_efl_pack_table_table_position_get(const Eo *obj, Efl_Ui_Table_Data *pd, Evas_Object *subobj, int *col, int *row, int *colspan, int *rowspan)
_efl_ui_table_efl_pack_table_table_cell_column_get(const Eo *obj, Efl_Ui_Table_Data *pd, Evas_Object *subobj, int *col, int *colspan)
{
int c = -1, r = -1, cs = 0, rs = 0;
int c = -1, cs = 0;
Table_Item *gi;
Eina_Bool ret = EINA_FALSE;
@ -393,19 +393,101 @@ _efl_ui_table_efl_pack_table_table_position_get(const Eo *obj, Efl_Ui_Table_Data
if (gi)
{
c = gi->col;
r = gi->row;
cs = gi->col_span;
rs = gi->row_span;
ret = EINA_TRUE;
}
if (col) *col = c;
if (row) *row = r;
if (colspan) *colspan = cs;
return ret;
}
EOLIAN static void
_efl_ui_table_efl_pack_table_table_cell_column_set(Eo *obj, Efl_Ui_Table_Data *pd, Evas_Object *subobj, int col, int colspan)
{
Table_Item *gi;
gi = _efl_ui_table_item_date_get((Eo *)obj, pd, subobj);
if (!gi)
return;
if (col < 0) col = 0;
if (colspan < 1) colspan = 1;
if (((int64_t) col + (int64_t) colspan) > (int64_t) INT_MAX)
colspan = INT_MAX - col;
if (pd->req_cols && ((col + colspan) > pd->req_cols))
{
ERR("table requested size exceeded! packing in extra cell at "
"%d+%d (table cols: %d)", col, colspan, pd->req_cols);
}
gi->col = col;
gi->col_span = colspan;
if (gi->col > pd->last_col)
pd->linear_recalc = EINA_TRUE;
if (pd->cols < gi->col + gi->col_span)
pd->cols = gi->col + gi->col_span;
efl_pack_layout_request(obj);
}
EOLIAN static Eina_Bool
_efl_ui_table_efl_pack_table_table_cell_row_get(const Eo *obj, Efl_Ui_Table_Data *pd, Evas_Object *subobj, int *row, int *rowspan)
{
int r = -1, rs = 0;
Table_Item *gi;
Eina_Bool ret = EINA_FALSE;
gi = _efl_ui_table_item_date_get((Eo *)obj, pd, subobj);
if (gi)
{
r = gi->row;
rs = gi->row_span;
ret = EINA_TRUE;
}
if (row) *row = r;
if (rowspan) *rowspan = rs;
return ret;
}
EOLIAN static void
_efl_ui_table_efl_pack_table_table_cell_row_set(Eo *obj, Efl_Ui_Table_Data *pd, Evas_Object *subobj, int row, int rowspan)
{
Table_Item *gi;
gi = _efl_ui_table_item_date_get((Eo *)obj, pd, subobj);
if (!gi)
return;
if (row < 0) row = 0;
if (rowspan < 1) rowspan = 1;
if (((int64_t) row + (int64_t) rowspan) > (int64_t) INT_MAX)
rowspan = INT_MAX - row;
if (pd->req_rows && ((row + rowspan) > pd->req_rows))
{
ERR("table requested size exceeded! packing in extra cell at "
"%d+%d (table rows: %d)", row, rowspan, pd->req_rows);
}
gi->row = row;
gi->row_span = rowspan;
if (gi->row > pd->last_row)
pd->linear_recalc = EINA_TRUE;
if (pd->rows < gi->row + gi->row_span)
pd->rows = gi->row + gi->row_span;
efl_pack_layout_request(obj);
}
EOLIAN static Efl_Gfx_Entity *
_efl_ui_table_efl_pack_table_table_content_get(Eo *obj EINA_UNUSED, Efl_Ui_Table_Data *pd, int col, int row)
{

View File

@ -47,7 +47,8 @@ class Efl.Ui.Table extends Efl.Ui.Widget implements Efl.Pack_Table, Efl.Pack_Lay
Efl.Pack_Table.pack_table;
Efl.Pack_Table.table_content_get;
Efl.Pack_Table.table_contents_get;
Efl.Pack_Table.table_position { get; }
Efl.Pack_Table.table_cell_column { get; set; }
Efl.Pack_Table.table_cell_row { get; set; }
Efl.Pack_Table.table_size { get; set; }
Efl.Pack_Table.table_columns { get; set; }
Efl.Pack_Table.table_rows { get; set; }

View File

@ -236,7 +236,8 @@ EFL_START_TEST(edje_test_table_eoapi)
it = efl_content_iterate(efl_part(obj, "table"));
EINA_ITERATOR_FOREACH(it, sobj)
{
efl_pack_table_position_get(efl_part(obj, "table"), sobj, &k, &l, &cs, &rs);
efl_pack_table_cell_column_get(efl_part(obj, "table"), sobj, &k, &cs);
efl_pack_table_cell_column_get(efl_part(obj, "table"), sobj, &l, &rs);
fail_if(cs != 1);
fail_if(rs != 1);
if (l >= 2)