bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=d11551050d74b0a6d832e65ebf8561031828158d
commit d11551050d74b0a6d832e65ebf8561031828158d Author: Marcel Hollerbach <m...@marcel-hollerbach.de> Date: Tue Aug 6 22:31:40 2019 +0200 efl_ui_item: fix event emission with this commit events are emitted correctly, even if the container is already on the way to deletion. Additionally, the codepath that is triggered when the item is selected via clickable is now also going through the selected property. ref 7905 Reviewed-by: SangHyeon Jade Lee <sh10233....@samsung.com> Differential Revision: https://phab.enlightenment.org/D9517 --- src/lib/elementary/efl_ui_item.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/lib/elementary/efl_ui_item.c b/src/lib/elementary/efl_ui_item.c index 6e88a84f10..492917c798 100644 --- a/src/lib/elementary/efl_ui_item.c +++ b/src/lib/elementary/efl_ui_item.c @@ -143,11 +143,17 @@ _item_select(Eo *obj, Efl_Ui_Item_Data *pd) { 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->parent) + { + 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; + } + else + { + if (pd->selected) + return; + } ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd); @@ -191,9 +197,9 @@ _item_unpressed(void *data, const Efl_Event *ev EINA_UNUSED) m = efl_ui_select_mode_get(efl_ui_item_container_get(obj)); if ((m != EFL_UI_SELECT_MODE_SINGLE_ALWAYS) && (pd->selected)) - _item_unselect(obj, pd); + efl_ui_selectable_selected_set(obj, EINA_FALSE); else if (m != EFL_UI_SELECT_MODE_NONE) - _item_select(obj, pd); + efl_ui_selectable_selected_set(obj, EINA_TRUE); } EFL_CALLBACKS_ARRAY_DEFINE(self_listening, --