jaehwan pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=5c8d643271879db3747e3745382ba2f88bd28c55
commit 5c8d643271879db3747e3745382ba2f88bd28c55 Author: Jaehwan Kim <jae.hwan....@samsung.com> Date: Wed Aug 5 14:46:01 2015 +0900 focus: add del callback always. When the window treats focused object, it should always check that it is deleted. @fix --- src/lib/elm_win.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/lib/elm_win.c b/src/lib/elm_win.c index 9c0b315..5c0d807 100644 --- a/src/lib/elm_win.c +++ b/src/lib/elm_win.c @@ -1691,8 +1691,6 @@ _elm_win_focus_target_callbacks_add(Elm_Win_Data *sd) (obj, EVAS_CALLBACK_MOVE, _elm_win_focus_target_move, sd->obj); evas_object_event_callback_add (obj, EVAS_CALLBACK_RESIZE, _elm_win_focus_target_resize, sd->obj); - evas_object_event_callback_add - (obj, EVAS_CALLBACK_DEL, _elm_win_focus_target_del, sd->obj); } static void @@ -1704,8 +1702,6 @@ _elm_win_focus_target_callbacks_del(Elm_Win_Data *sd) (obj, EVAS_CALLBACK_MOVE, _elm_win_focus_target_move, sd->obj); evas_object_event_callback_del_full (obj, EVAS_CALLBACK_RESIZE, _elm_win_focus_target_resize, sd->obj); - evas_object_event_callback_del_full - (obj, EVAS_CALLBACK_DEL, _elm_win_focus_target_del, sd->obj); } static void @@ -1726,6 +1722,9 @@ _elm_win_object_focus_in(void *data, else _elm_win_focus_target_callbacks_add(sd); + evas_object_event_callback_add + (target, EVAS_CALLBACK_DEL, _elm_win_focus_target_del, sd->obj); + _elm_win_focus_highlight_reconfigure_job_start(sd); } @@ -1742,6 +1741,10 @@ _elm_win_object_focus_out(void *data, if (!sd->focus_highlight.cur.in_theme) _elm_win_focus_target_callbacks_del(sd); + evas_object_event_callback_del_full + (sd->focus_highlight.cur.target, + EVAS_CALLBACK_DEL, _elm_win_focus_target_del, sd->obj); + sd->focus_highlight.cur.target = NULL; sd->focus_highlight.cur.in_theme = EINA_FALSE; @@ -1757,6 +1760,9 @@ _elm_win_focus_highlight_shutdown(Elm_Win_Data *sd) elm_widget_signal_emit(sd->focus_highlight.cur.target, "elm,action,focus_highlight,hide", "elm"); _elm_win_focus_target_callbacks_del(sd); + evas_object_event_callback_del_full + (sd->focus_highlight.cur.target, + EVAS_CALLBACK_DEL, _elm_win_focus_target_del, sd->obj); sd->focus_highlight.cur.target = NULL; } ELM_SAFE_FREE(sd->focus_highlight.fobj, evas_object_del); @@ -2562,6 +2568,10 @@ _elm_win_focus_highlight_init(Elm_Win_Data *sd) sd->focus_highlight.cur.in_theme = EINA_TRUE; else _elm_win_focus_target_callbacks_add(sd); + + evas_object_event_callback_add + (sd->focus_highlight.cur.target, + EVAS_CALLBACK_DEL, _elm_win_focus_target_del, sd->obj); } sd->focus_highlight.prev.target = NULL; --