elementary/elm_object_item - delete the track objects when genlist/gengrid items are unrealized.

This commit is contained in:
ChunEon Park 2013-09-13 14:19:41 +09:00
parent 8982c267a9
commit f426e08982
4 changed files with 28 additions and 1 deletions

View File

@ -548,6 +548,9 @@ _elm_gengrid_item_unrealize(Elm_Gen_Item *it,
it->realized = EINA_FALSE;
it->want_unrealize = EINA_FALSE;
elm_widget_item_track_cancel(it);
evas_event_thaw(evas_object_evas_get(WIDGET(it)));
evas_event_thaw_eval(evas_object_evas_get(WIDGET(it)));
}

View File

@ -347,6 +347,9 @@ _elm_genlist_item_unrealize(Elm_Gen_Item *it,
it->realized = EINA_FALSE;
it->want_unrealize = EINA_FALSE;
elm_widget_item_track_cancel(it);
evas_event_thaw(evas_object_evas_get(WIDGET(it)));
evas_event_thaw_eval(evas_object_evas_get(WIDGET(it)));
}

View File

@ -5266,6 +5266,19 @@ _elm_widget_item_domain_part_text_translatable_set(Elm_Widget_Item *item,
item->on_translate = EINA_FALSE;
}
EAPI void
_elm_widget_item_track_cancel(Elm_Widget_Item *item)
{
ELM_WIDGET_ITEM_CHECK_OR_RETURN(item);
if (!item->track_obj) return;
while (evas_object_ref_get(item->track_obj) > 0)
evas_object_unref(item->track_obj);
evas_object_del(item->track_obj);
}
EAPI Evas_Object *
elm_widget_item_track(Elm_Widget_Item *item)
{

View File

@ -776,6 +776,7 @@ EAPI void _elm_widget_item_domain_part_text_translatable_set(Elm_Wid
EAPI Evas_Object *elm_widget_item_track(Elm_Widget_Item *item);
EAPI void elm_widget_item_untrack(Elm_Widget_Item *item);
EAPI int elm_widget_item_track_get(const Elm_Widget_Item *item);
EAPI void _elm_widget_item_track_cancel(Elm_Widget_Item *item);
/**
* Function to operate on a given widget's scrollabe children when necessary.
@ -999,9 +1000,16 @@ EAPI void elm_widget_tree_dot_dump(const Evas_Object *top, FILE *out
#define elm_widget_item_del_pre_hook_set(item, func) \
_elm_widget_item_del_pre_hook_set((Elm_Widget_Item *)item, (Elm_Widget_Del_Pre_Cb)func)
/**
* Convenience function to query track_cancel.
* @see _elm_widget_item_del_pre_hook_set()
*/
#define elm_widget_item_track_cancel(item) \
_elm_widget_item_track_cancel((Elm_Widget_Item *)item)
/**
* Convenience function to query translate hook.
* @see _elm_widget_item_translate()
* @see _elm_widget_item_track_cancel()
*/
#define elm_widget_item_translate(item) \
_elm_widget_item_translate((Elm_Widget_Item *)item)