return dev;
}
+//TIZEN_ONLY(20200213): remove child object from list when child is deleted.
+void
+_source_child_del_cb(void *data, const Efl_Event *event)
+{
+ Eo *eo_src = data;
+ Eo *obj = event->object;
+ Evas_Object_Protected_Data *src = efl_data_scope_get(eo_src, EFL_CANVAS_OBJECT_CLASS);
+
+ if (!src || src->delete_me) return;
+
+ EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, src->proxy, Evas_Object_Proxy_Data, proxy_write)
+ proxy_write->src_event_in = eina_list_remove(proxy_write->src_event_in, obj);
+ EINA_COW_WRITE_END(evas_object_proxy_cow, src->proxy, proxy_write);
+}
+
+static void
+_source_child_callback_add(Evas_Object *eo_src)
+{
+ Evas_Object_Protected_Data *src = efl_data_scope_get(eo_src, EFL_CANVAS_OBJECT_CLASS);
+ Evas_Object *eo_child;
+ Eina_List *l;
+
+ EINA_LIST_FOREACH(src->proxy->src_event_in, l, eo_child)
+ {
+ efl_event_callback_add(eo_child, EFL_EVENT_DEL, _source_child_del_cb, eo_src);
+ }
+}
+
+static void
+_source_child_callback_del(Evas_Object *eo_src)
+{
+ Evas_Object_Protected_Data *src = efl_data_scope_get(eo_src, EFL_CANVAS_OBJECT_CLASS);
+ Evas_Object *eo_child;
+ Eina_List *l;
+
+ EINA_LIST_FOREACH(src->proxy->src_event_in, l, eo_child)
+ {
+ efl_event_callback_del(eo_child, EFL_EVENT_DEL, _source_child_del_cb, eo_src);
+ }
+}
+//
+
static void
_evas_event_source_mouse_down_events(Evas_Object *eo_obj, Evas *eo_e,
Efl_Input_Pointer *parent_ev,
EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, src->proxy, Evas_Object_Proxy_Data, proxy_write)
{
if (proxy_write->src_event_in)
- proxy_write->src_event_in = eina_list_free(proxy_write->src_event_in);
+ {
+ //TIZEN_ONLY(20200213): remove child object from list when child is deleted.
+ _source_child_callback_del(eo_src);
+ proxy_write->src_event_in = eina_list_free(proxy_write->src_event_in);
+ //
+ }
if (src->is_smart)
{
proxy_write->src_event_in = eina_list_append(proxy_write->src_event_in, eo_src);
}
EINA_COW_WRITE_END(evas_object_proxy_cow, src->proxy, proxy_write);
+
+ //TIZEN_ONLY(20200213): remove child object from list when child is deleted.
+ _source_child_callback_add(eo_src);
+ //
}
if (pdata->seat->mouse_grabbed == 0)
_evas_event_havemap_adjust_f(child, &ev->cur, &ev->prev, obj_pdata->mouse_grabbed);
+ //TIZEN_ONLY(20200213): remove child object from list when child is deleted.
+ efl_event_callback_del(eo_child, EFL_EVENT_DEL, _source_child_del_cb, eo_src);
+ //
EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, src->proxy, Evas_Object_Proxy_Data, proxy_write)
proxy_write->src_event_in = eina_list_remove(proxy_write->src_event_in, eo_child);
EINA_COW_WRITE_END(evas_object_proxy_cow, src->proxy, proxy_write);
if (pdata->seat->mouse_grabbed == 0)
{
+ //TIZEN_ONLY(20200213): remove child object from list when child is deleted.
+ _source_child_callback_del(eo_src);
+ //
+
EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, src->proxy, Evas_Object_Proxy_Data, proxy_write)
{
eina_list_free(proxy_write->src_event_in);
proxy_write->src_event_in = ins;
}
EINA_COW_WRITE_END(evas_object_proxy_cow, src->proxy, proxy_write);
+
+ //TIZEN_ONLY(20200213): remove child object from list when child is deleted.
+ _source_child_callback_add(eo_src);
+ //
}
else
{
eina_list_free(copy);
if (pdata->seat->mouse_grabbed == 0)
{
+ //TIZEN_ONLY(20200213): remove child object from list when child is deleted.
+ _source_child_callback_del(eo_src);
+ //
+
EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, src->proxy, Evas_Object_Proxy_Data, proxy_write)
{
eina_list_free(proxy_write->src_event_in);
proxy_write->src_event_in = ins;
}
EINA_COW_WRITE_END(evas_object_proxy_cow, src->proxy, proxy_write);
+
+ //TIZEN_ONLY(20200213): remove child object from list when child is deleted.
+ _source_child_callback_add(eo_src);
+ //
}
else
eina_list_free(ins);
}
}
+ //TIZEN_ONLY(20200213): remove child object from list when child is deleted.
+ _source_child_callback_del(eo_src);
+ //
+
EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, src->proxy, Evas_Object_Proxy_Data, proxy_write)
{
eina_list_free(proxy_write->src_event_in);
}
EINA_COW_WRITE_END(evas_object_proxy_cow, src->proxy, proxy_write);
+ //TIZEN_ONLY(20200213): remove child object from list when child is deleted.
+ _source_child_callback_add(eo_src);
+ //
+
efl_unref(evt);
}
}
eina_list_free(copy);
+ //TIZEN_ONLY(20200213): remove child object from list when child is deleted.
+ _source_child_callback_del(eo_src);
+ //
+
EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, src->proxy, Evas_Object_Proxy_Data, proxy_write)
proxy_write->src_event_in = eina_list_free(proxy_write->src_event_in);
EINA_COW_WRITE_END(evas_object_proxy_cow, src->proxy, proxy_write);