bu5hm4n pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=1f66d9ed9b6eb5df09f66230e364197ccead00f5

commit 1f66d9ed9b6eb5df09f66230e364197ccead00f5
Author: Cedric BAIL <cedric.b...@free.fr>
Date:   Thu Nov 7 11:53:15 2019 -0800

    elementary: watch event on the model Efl.Ui.CollectionView use directly.
    
    Efl.Model can be nested and Efl.Ui.CollectionView use this ability. 
Listening
    on the nested model instead of the nester model can lead to event being 
triggered
    that shouldn't. Better listen on the top model.
    
    Differential Revision: https://phab.enlightenment.org/D10621
---
 src/lib/elementary/efl_ui_collection_view.c | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/src/lib/elementary/efl_ui_collection_view.c 
b/src/lib/elementary/efl_ui_collection_view.c
index c08ae16dba..16680e8d47 100644
--- a/src/lib/elementary/efl_ui_collection_view.c
+++ b/src/lib/elementary/efl_ui_collection_view.c
@@ -1884,12 +1884,10 @@ _efl_ui_collection_view_model_changed(void *data, const 
Efl_Event *event)
    Efl_Model *mselect = NULL;
    Eina_Bool selection = EINA_FALSE, sizing = EINA_FALSE;
 
-   if (ev->previous) efl_event_callback_array_del(ev->previous, model_cbs(), 
data);
-   if (ev->current) efl_event_callback_array_add(ev->current, model_cbs(), 
data);
-
    // Cleanup all object, pending request and refetch everything
    _all_cleanup(data, pd);
 
+   if (pd->model) efl_event_callback_array_del(pd->model, model_cbs(), data);
    efl_replace(&pd->model, NULL);
 
    if (!ev->current)
@@ -1983,6 +1981,8 @@ _efl_ui_collection_view_model_changed(void *data, const 
Efl_Event *event)
    requests = _batch_request_flush(requests, data, pd);
 
    pd->model = model;
+   efl_event_callback_array_add(pd->model, model_cbs(), data);
+
    efl_ui_position_manager_entity_item_size_changed(pd->manager, 0, count - 1);
    switch(efl_ui_position_manager_entity_version(pd->manager, 1))
      {
@@ -1993,8 +1993,6 @@ _efl_ui_collection_view_model_changed(void *data, const 
Efl_Event *event)
            count);
        break;
      }
-
-
 }
 
 static void

-- 


Reply via email to