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,

-- 


Reply via email to