From d512ff68ae41b71956c60d335216e93b33df2afb Mon Sep 17 00:00:00 2001 From: Marcel Hollerbach Date: Wed, 10 Jul 2019 16:57:57 +0200 Subject: [PATCH] efl_ui_item: remove internal pointer to select_mode there was this internal pointer to select_mode for getting the selection mode of the container. However, we now have API for checking this, so there is exactly 0 reason for doing this like this. Additionally, with the old way of doing, bildings like C# or lua are just lost, they cannot use this class at all in there implementations, as they cannot access the privat data. ref T905 Reviewed-by: SangHyeon Jade Lee Differential Revision: https://phab.enlightenment.org/D9263 --- src/lib/elementary/efl_ui_grid.c | 7 ------- src/lib/elementary/efl_ui_item.c | 17 ++++++++++++----- src/lib/elementary/efl_ui_item_private.h | 1 - src/lib/elementary/efl_ui_list.c | 7 ------- 4 files changed, 12 insertions(+), 20 deletions(-) diff --git a/src/lib/elementary/efl_ui_grid.c b/src/lib/elementary/efl_ui_grid.c index 36d069b5c7..20ef53d2f1 100644 --- a/src/lib/elementary/efl_ui_grid.c +++ b/src/lib/elementary/efl_ui_grid.c @@ -746,10 +746,6 @@ _grid_item_process(Eo *obj, Efl_Ui_Grid_Data *pd, EINA_UNUSED Efl_Ui_Grid_Item * if (!efl_ui_widget_sub_object_add(obj, it)) return EINA_FALSE; - //FIXME: This is tricky workaround for set select mode and parent value. - EFL_UI_GRID_ITEM_DATA_GET_OR_RETURN(it, gd, EINA_FALSE); - EFL_UI_ITEM_DATA_GET_OR_RETURN(it, id, EINA_FALSE); - id->select_mode = &(pd->select_mode); efl_ui_item_container_set(it, obj); efl_canvas_group_member_add(pd->pan, it); efl_ui_mirrored_set(it, efl_ui_mirrored_get(obj)); @@ -768,9 +764,6 @@ static void _grid_item_unpack_internal(Eo *obj, Efl_Ui_Grid_Data *pd, Efl_Ui_Grid_Item *it) { EFL_UI_GRID_ITEM_CHECK_OR_RETURN(it); - EFL_UI_GRID_ITEM_DATA_GET_OR_RETURN(it, gd); - EFL_UI_ITEM_DATA_GET_OR_RETURN(it, id); - id->select_mode = NULL; efl_ui_item_container_set(it, NULL); pd->items = eina_list_remove(pd->items, it); diff --git a/src/lib/elementary/efl_ui_item.c b/src/lib/elementary/efl_ui_item.c index 47d7b632a5..8b16afd5f2 100644 --- a/src/lib/elementary/efl_ui_item.c +++ b/src/lib/elementary/efl_ui_item.c @@ -143,10 +143,12 @@ _efl_ui_item_part_content_efl_content_content_unset(Eo *obj, void *pd EINA_UNUSE static void _item_select(Eo *obj, Efl_Ui_Item_Data *pd) { - if (pd->selected && - (*(pd->select_mode) != EFL_UI_SELECT_MODE_SINGLE_ALWAYS)) + Efl_Ui_Select_Mode m; + if (!pd->parent) + return; + m = efl_ui_select_mode_get(pd->parent); + if (m == EFL_UI_SELECT_MODE_NONE || (pd->selected && m != EFL_UI_SELECT_MODE_SINGLE_ALWAYS)) return; - if (*(pd->select_mode) == EFL_UI_SELECT_MODE_NONE) return; ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd); @@ -206,6 +208,10 @@ _item_mouse_up(void *data, { Evas_Event_Mouse_Up *ev = event_info; Eo *item = data; + Efl_Ui_Select_Mode m; + + if (!efl_ui_item_container_get(item)) + return; EFL_UI_ITEM_DATA_GET_OR_RETURN(item, pd); ELM_WIDGET_DATA_GET_OR_RETURN(item, wd); if (wd->disabled) return; @@ -226,9 +232,10 @@ _item_mouse_up(void *data, edje_object_signal_emit(wd->resize_obj, "efl,state,unpressed", "efl"); efl_event_callback_call(item, EFL_UI_EVENT_UNPRESSED, NULL); - if ((*(pd->select_mode) != EFL_UI_SELECT_MODE_SINGLE_ALWAYS) && (pd->selected)) + m = efl_ui_select_mode_get(efl_ui_item_container_get(item)); + if ((m != EFL_UI_SELECT_MODE_SINGLE_ALWAYS) && (pd->selected)) _item_unselect(item, pd); - else if (*(pd->select_mode) != EFL_UI_SELECT_MODE_NONE) + else if (m != EFL_UI_SELECT_MODE_NONE) _item_select(item, pd); } diff --git a/src/lib/elementary/efl_ui_item_private.h b/src/lib/elementary/efl_ui_item_private.h index b8849a2316..ea8ac073c9 100644 --- a/src/lib/elementary/efl_ui_item_private.h +++ b/src/lib/elementary/efl_ui_item_private.h @@ -9,7 +9,6 @@ typedef struct _Efl_Ui_Item_Data Eo *obj; /* Self-Object */ Eo *parent; /* Parent Widget */ - Efl_Ui_Select_Mode *select_mode; /* Select Mdoe of parent widget */ Ecore_Timer *longpress_timer; /* Timer for longpress handle */ // Boolean Data diff --git a/src/lib/elementary/efl_ui_list.c b/src/lib/elementary/efl_ui_list.c index 971754ca88..bc7ee583a6 100644 --- a/src/lib/elementary/efl_ui_list.c +++ b/src/lib/elementary/efl_ui_list.c @@ -671,10 +671,6 @@ _list_item_process(Eo *obj, Efl_Ui_List_Data *pd, EINA_UNUSED Efl_Ui_List_Item * { EFL_UI_LIST_ITEM_CHECK_OR_RETURN(it, EINA_FALSE); - //FIXME: This is tricky workaround for set select mode and parent value. - EFL_UI_LIST_ITEM_DATA_GET_OR_RETURN(it, ld, EINA_FALSE); - EFL_UI_ITEM_DATA_GET_OR_RETURN(it, id, EINA_FALSE); - id->select_mode = &(pd->select_mode); efl_ui_item_container_set(it, obj); efl_ui_mirrored_set(it, efl_ui_mirrored_get(obj)); @@ -691,9 +687,6 @@ static void _list_item_clear(Eo *obj, Efl_Ui_List_Data *pd EINA_UNUSED, EINA_UNUSED Efl_Ui_List_Item *it) { EFL_UI_LIST_ITEM_CHECK_OR_RETURN(it); - EFL_UI_LIST_ITEM_DATA_GET_OR_RETURN(it, ld); - EFL_UI_ITEM_DATA_GET_OR_RETURN(it, id); - id->select_mode = NULL; efl_ui_item_container_set(it, NULL); efl_event_callback_del(it, EFL_UI_EVENT_PRESSED, _list_item_pressed, obj);