From cbb946ee997d4e2f8844c7ee1bc86fbaedb6839f Mon Sep 17 00:00:00 2001 From: WooHyun Jung Date: Wed, 22 Jan 2014 16:24:25 +0900 Subject: [PATCH] elm_widget: Fixed some codes about focus custom chain. - When appending an object to the focus custom chain, event callback about deletion should be added. - When a widget is deleted, its focus custom chain should be managed correctly. --- legacy/elementary/src/lib/elm_widget.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/legacy/elementary/src/lib/elm_widget.c b/legacy/elementary/src/lib/elm_widget.c index 37859ae107..80676f5473 100644 --- a/legacy/elementary/src/lib/elm_widget.c +++ b/legacy/elementary/src/lib/elm_widget.c @@ -326,11 +326,12 @@ _elm_widget_smart_del(Eo *obj, void *_pd, va_list *list EINA_UNUSED) } EINA_LIST_FREE(sd->event_cb, ecb) - free(ecb); + free(ecb); eina_stringshare_del(sd->style); if (sd->theme) elm_theme_free(sd->theme); _if_focused_revert(obj, EINA_TRUE); + elm_widget_focus_custom_chain_unset(obj); eina_stringshare_del(sd->access_info); evas_object_smart_data_set(obj, NULL); } @@ -1983,8 +1984,8 @@ _elm_widget_focus_custom_chain_append(Eo *obj, void *_pd, va_list *list) if (!_elm_widget_focus_chain_manager_is(obj)) return; - evas_object_event_callback_del_full(child, EVAS_CALLBACK_DEL, - _elm_object_focus_chain_del_cb, obj); + evas_object_event_callback_add(child, EVAS_CALLBACK_DEL, + _elm_object_focus_chain_del_cb, obj); if (!relative_child) sd->focus_chain = eina_list_append(sd->focus_chain, child); @@ -2029,8 +2030,8 @@ _elm_widget_focus_custom_chain_prepend(Eo *obj, void *_pd, va_list *list) if (!_elm_widget_focus_chain_manager_is(obj)) return; - evas_object_event_callback_del_full(child, EVAS_CALLBACK_DEL, - _elm_object_focus_chain_del_cb, obj); + evas_object_event_callback_add(child, EVAS_CALLBACK_DEL, + _elm_object_focus_chain_del_cb, obj); if (!relative_child) sd->focus_chain = eina_list_prepend(sd->focus_chain, child);