From 6372dcdc2df599381a359a7daa8feb7aaf141f58 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Andre Date: Wed, 9 Aug 2017 23:36:02 +0900 Subject: [PATCH] grid: Switch to Efl.Ui.Dir (EO) Ref T5870 --- src/bin/elementary/test_ui_grid.c | 2 +- src/lib/efl/interfaces/efl_pack_grid.eo | 11 ++--- src/lib/elementary/efl_ui_grid.c | 57 ++++++++++-------------- src/lib/elementary/efl_ui_grid.eo | 6 +-- src/lib/elementary/efl_ui_grid_private.h | 8 +--- src/lib/elementary/elm_priv.h | 1 + 6 files changed, 36 insertions(+), 49 deletions(-) diff --git a/src/bin/elementary/test_ui_grid.c b/src/bin/elementary/test_ui_grid.c index a293566ea1..1a84b40aae 100644 --- a/src/bin/elementary/test_ui_grid.c +++ b/src/bin/elementary/test_ui_grid.c @@ -585,7 +585,7 @@ test_ui_grid_linear(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, efl_gfx_visible_set(f, 1); efl_pack_grid_columns_set(grid, 4); - efl_pack_grid_orientation_set(grid, EFL_ORIENT_RIGHT, EFL_ORIENT_DOWN); + efl_pack_grid_direction_set(grid, EFL_UI_DIR_RIGHT, EFL_UI_DIR_DOWN); efl_gfx_size_hint_weight_set(grid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); elm_object_content_set(f, grid); efl_gfx_visible_set(grid, 1); diff --git a/src/lib/efl/interfaces/efl_pack_grid.eo b/src/lib/efl/interfaces/efl_pack_grid.eo index a0832bb753..1f1f21fbce 100644 --- a/src/lib/efl/interfaces/efl_pack_grid.eo +++ b/src/lib/efl/interfaces/efl_pack_grid.eo @@ -71,16 +71,17 @@ interface Efl.Pack.Grid (Efl.Pack.Linear) rows: int; [[Number of rows]] } } - @property grid_orientation { - [[Primary and secondary up/left/right/down orientations for linear apis. + @property grid_direction { + [[Primary and secondary up/left/right/down directions for linear apis. - Default is right and down. Overrides @Efl.Orientation.orientation. + Default is horizontal and vertical. + This overrides @Efl.Ui.Direction.direction. ]] set {} get {} values { - primary: Efl.Orient; [[Primary orientation]] - secondary: Efl.Orient; [[Secondary orientation]] + primary: Efl.Ui.Dir(Efl.Ui.Dir.horizontal); [[Primary direction]] + secondary: Efl.Ui.Dir(Efl.Ui.Dir.vertical); [[Secondary direction]] } } } diff --git a/src/lib/elementary/efl_ui_grid.c b/src/lib/elementary/efl_ui_grid.c index 181db543d5..58a8e0515a 100644 --- a/src/lib/elementary/efl_ui_grid.c +++ b/src/lib/elementary/efl_ui_grid.c @@ -274,8 +274,8 @@ _efl_ui_grid_efl_object_constructor(Eo *obj, Efl_Ui_Grid_Data *pd) efl_canvas_object_type_set(obj, MY_CLASS_NAME); elm_interface_atspi_accessible_role_set(obj, ELM_ATSPI_ROLE_FILLER); - pd->dir1 = EFL_ORIENT_RIGHT; - pd->dir2 = EFL_ORIENT_DOWN; + pd->dir1 = EFL_UI_DIR_RIGHT; + pd->dir2 = EFL_UI_DIR_DOWN; pd->last_col = -1; pd->last_row = -1; pd->req_cols = 0; @@ -474,7 +474,7 @@ _item_remove(Efl_Ui_Grid *obj, Efl_Ui_Grid_Data *pd, Efl_Gfx *subobj) } if (last) { - if (_horiz(pd->dir1)) + if (efl_ui_dir_is_horizontal(pd->dir1, EINA_TRUE)) { pd->last_col = last->col + last->col_span - 1; pd->last_row = last->row; @@ -634,61 +634,52 @@ _efl_ui_grid_efl_pack_grid_grid_contents_get(Eo *obj, Efl_Ui_Grid_Data *pd EINA_ } EOLIAN static void -_efl_ui_grid_efl_orientation_orientation_set(Eo *obj, Efl_Ui_Grid_Data *pd, Efl_Orient orient) +_efl_ui_grid_efl_ui_direction_direction_set(Eo *obj, Efl_Ui_Grid_Data *pd, Efl_Ui_Dir dir) { - EINA_SAFETY_ON_FALSE_RETURN((orient % 90) == 0); + pd->dir1 = dir; - pd->dir1 = orient; - - /* if both orientations are either horizontal or vertical, need to adjust - * secondary orientation (dir2) */ - if (_horiz(pd->dir1) == _horiz(pd->dir2)) + /* if both directions are either horizontal or vertical, need to adjust + * secondary direction (dir2) */ + if (efl_ui_dir_is_horizontal(pd->dir1, EINA_TRUE) == + efl_ui_dir_is_horizontal(pd->dir2, EINA_FALSE)) { - if (!_horiz(pd->dir1)) - pd->dir2 = EFL_ORIENT_RIGHT; + if (!efl_ui_dir_is_horizontal(pd->dir1, EINA_TRUE)) + pd->dir2 = EFL_UI_DIR_RIGHT; else - pd->dir2 = EFL_ORIENT_DOWN; + pd->dir2 = EFL_UI_DIR_DOWN; } efl_pack_layout_request(obj); } -EOLIAN static Efl_Orient -_efl_ui_grid_efl_orientation_orientation_get(Eo *obj EINA_UNUSED, Efl_Ui_Grid_Data *pd) +EOLIAN static Efl_Ui_Dir +_efl_ui_grid_efl_ui_direction_direction_get(Eo *obj EINA_UNUSED, Efl_Ui_Grid_Data *pd) { return pd->dir1; } EOLIAN static void -_efl_ui_grid_efl_pack_grid_grid_orientation_set(Eo *obj, Efl_Ui_Grid_Data *pd, Efl_Orient primary, Efl_Orient secondary) +_efl_ui_grid_efl_pack_grid_grid_direction_set(Eo *obj, Efl_Ui_Grid_Data *pd, Efl_Ui_Dir primary, Efl_Ui_Dir secondary) { - EINA_SAFETY_ON_FALSE_RETURN((primary % 90) == 0); - EINA_SAFETY_ON_FALSE_RETURN((secondary % 90) == 0); - pd->dir1 = primary; pd->dir2 = secondary; - if (_horiz(pd->dir1) == _horiz(pd->dir2)) + if (efl_ui_dir_is_horizontal(pd->dir1, EINA_TRUE) == + efl_ui_dir_is_horizontal(pd->dir2, EINA_FALSE)) { - ERR("specified two orientations in the same axis, secondary orientation " + ERR("specified two directions in the same axis, secondary directions " " is reset to a valid default"); - switch (pd->dir1) - { - case EFL_ORIENT_DOWN: - case EFL_ORIENT_UP: - pd->dir2 = EFL_ORIENT_RIGHT; - break; - default: - pd->dir2 = EFL_ORIENT_DOWN; - break; - } + if (efl_ui_dir_is_horizontal(pd->dir1, EINA_TRUE)) + pd->dir2 = EFL_UI_DIR_DOWN; + else + pd->dir2 = EFL_UI_DIR_RIGHT; } efl_pack_layout_request(obj); } EOLIAN static void -_efl_ui_grid_efl_pack_grid_grid_orientation_get(Eo *obj EINA_UNUSED, Efl_Ui_Grid_Data *pd, Efl_Orient *primary, Efl_Orient *secondary) +_efl_ui_grid_efl_pack_grid_grid_direction_get(Eo *obj EINA_UNUSED, Efl_Ui_Grid_Data *pd, Efl_Ui_Dir *primary, Efl_Ui_Dir *secondary) { if (primary) *primary = pd->dir1; if (secondary) *secondary = pd->dir2; @@ -770,7 +761,7 @@ _efl_ui_grid_efl_pack_linear_pack_end(Eo *obj, Efl_Ui_Grid_Data *pd, Efl_Gfx *su int col = pd->last_col; int row = pd->last_row; - if (_horiz(pd->dir1)) + if (efl_ui_dir_is_horizontal(pd->dir1, EINA_TRUE)) { col++; if (pd->req_cols && (col >= pd->req_cols)) diff --git a/src/lib/elementary/efl_ui_grid.eo b/src/lib/elementary/efl_ui_grid.eo index 6e330a46b9..bc6c98a467 100644 --- a/src/lib/elementary/efl_ui_grid.eo +++ b/src/lib/elementary/efl_ui_grid.eo @@ -1,5 +1,5 @@ class Efl.Ui.Grid (Elm.Widget, Efl.Pack.Grid, Efl.Pack.Layout, - Efl.Orientation) + Efl.Ui.Direction) { [[Efl UI grid class]] implements { @@ -12,7 +12,7 @@ class Efl.Ui.Grid (Elm.Widget, Efl.Pack.Grid, Efl.Pack.Layout, Elm.Widget.theme_apply; Efl.Container.content_iterate; Efl.Container.content_count; - Efl.Orientation.orientation { get; set; } + Efl.Ui.Direction.direction { get; set; } Efl.Pack.pack_clear; Efl.Pack.unpack_all; Efl.Pack.unpack; @@ -25,7 +25,7 @@ class Efl.Ui.Grid (Elm.Widget, Efl.Pack.Grid, Efl.Pack.Layout, Efl.Pack.Grid.grid_size { get; set; } Efl.Pack.Grid.grid_columns { get; set; } Efl.Pack.Grid.grid_rows { get; set; } - Efl.Pack.Grid.grid_orientation { get; set; } + Efl.Pack.Grid.grid_direction { get; set; } Efl.Pack.Linear.pack_end; Efl.Pack.Layout.layout_update; Efl.Pack.Layout.layout_request; diff --git a/src/lib/elementary/efl_ui_grid_private.h b/src/lib/elementary/efl_ui_grid_private.h index 5d9f9efc25..e362bfa607 100644 --- a/src/lib/elementary/efl_ui_grid_private.h +++ b/src/lib/elementary/efl_ui_grid_private.h @@ -34,7 +34,7 @@ struct _Efl_Ui_Grid_Data int req_cols, req_rows; // requested - 0 means infinite int last_col, last_row; // only used by linear apis - Efl_Orient dir1, dir2; // must be orthogonal (H,V or V,H) + Efl_Ui_Dir dir1, dir2; // must be orthogonal (H,V or V,H) struct { double h, v; Eina_Bool scalable: 1; @@ -50,10 +50,4 @@ struct _Grid_Item_Iterator Efl_Ui_Grid *object; }; -static inline Eina_Bool -_horiz(Efl_Orient dir) -{ - return dir % 180 == EFL_ORIENT_RIGHT; -} - #endif diff --git a/src/lib/elementary/elm_priv.h b/src/lib/elementary/elm_priv.h index 09cb28533f..67f4dea3f2 100644 --- a/src/lib/elementary/elm_priv.h +++ b/src/lib/elementary/elm_priv.h @@ -653,6 +653,7 @@ efl_ui_dir_is_horizontal(Efl_Ui_Dir dir, Eina_Bool def_val) case EFL_UI_DIR_RTL: return EINA_TRUE; case EFL_UI_DIR_DOWN: return EINA_FALSE; case EFL_UI_DIR_UP: return EINA_FALSE; + default: return !!def_val; } }