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 <sh10233.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D9263
This commit is contained in:
Marcel Hollerbach 2019-07-10 16:57:57 +02:00
parent d30fc5f5d3
commit d512ff68ae
4 changed files with 12 additions and 20 deletions

View File

@ -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);

View File

@ -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);
}

View File

@ -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

View File

@ -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);