Elm_Win: Fix _elm_win_focus_prev_target_del callback added repeatly without callback del.

Summary:
When object in elm_win lose their focus, elm_win save it on focus_highlight.prev structure,
and add **EVAS_CALLBACK_DEL** event callback. But after changed focus object also lose their focus from other,
**EVAS_CALLBACK_DEL** on prev object is not deleted if their in_theme is not **EINA_TRUE**.
This could be cause **'Memory Leak' **until previous focused objects are deleting.
checking in_theme of prev focus_highlight is for send signal on prev focused view(edje),
so 'if' sentence for checking previous existance and in_theme need to be separated.

@fix

Test Plan:
You can easily check this on elementary_test. launch radio sample and make focus by keyboard and
change focus repeatly, callback is added as per focus movement, but callback del is not called.

Reviewers: seoz, woohyun, raster, Hermet

Reviewed By: Hermet

Subscribers: jaehwan

Differential Revision: https://phab.enlightenment.org/D2276
This commit is contained in:
SangHyeon Lee 2015-04-06 10:54:15 +09:00 committed by ChunEon Park
parent 8eb0e40a27
commit 4f5f6a9651
1 changed files with 4 additions and 3 deletions

View File

@ -922,12 +922,13 @@ _elm_win_focus_highlight_reconfigure_job(void *data)
(!sd->focus_highlight.theme_changed))
return;
if ((previous) && (sd->focus_highlight.prev.in_theme))
if (previous)
{
evas_object_event_callback_del_full
(previous, EVAS_CALLBACK_DEL, _elm_win_focus_prev_target_del, data);
elm_widget_signal_emit
(previous, "elm,action,focus_highlight,hide", "elm");
if (sd->focus_highlight.prev.in_theme)
elm_widget_signal_emit
(previous, "elm,action,focus_highlight,hide", "elm");
}
if (!target)