Evas filters: Fix errors in Evas_Object::destructor

Remove invalid call to source_unset and call the appropriate
Eo evas_obj_text_filter_source_set in case of Evas_Text with
proxy sources.
This commit is contained in:
Jean-Philippe Andre 2014-03-04 14:14:15 +09:00
parent cc21f8f173
commit 63a18f3fce
2 changed files with 14 additions and 1 deletions

View File

@ -657,7 +657,12 @@ _destructor(Eo *eo_obj, void *_pd, va_list *list EINA_UNUSED)
EINA_LIST_FOREACH_SAFE(obj->clip.clipees, l, l2, tmp)
evas_object_clip_unset(tmp->object);
EINA_LIST_FOREACH_SAFE(obj->proxy->proxies, l, l2, proxy)
evas_object_image_source_unset(proxy);
{
if (eo_isa(proxy, EVAS_OBJ_IMAGE_CLASS))
evas_object_image_source_unset(proxy);
else if (eo_isa(proxy, EVAS_OBJ_TEXT_CLASS))
eo_do(proxy, evas_obj_text_filter_source_set(NULL, eo_obj));
}
if (obj->cur->clipper) evas_object_clip_unset(eo_obj);
evas_object_map_set(eo_obj, NULL);
if (obj->is_smart) evas_object_smart_del(eo_obj);

View File

@ -2808,6 +2808,14 @@ _filter_source_set(Eo *eo_obj, void *_pd, va_list *list)
obj = eo_data_scope_get(eo_obj, EVAS_OBJ_CLASS);
if (eo_source) source = eo_data_scope_get(eo_source, EVAS_OBJ_CLASS);
if (!name)
{
if (!eo_source || !o->cur.filter.sources) return;
if (eina_hash_del_by_data(o->cur.filter.sources, eo_source))
goto update;
return;
}
if (!o->cur.filter.sources)
{
o->cur.filter.sources = eina_hash_string_small_new