forked from enlightenment/efl
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:
parent
8eb0e40a27
commit
4f5f6a9651
|
@ -922,12 +922,13 @@ _elm_win_focus_highlight_reconfigure_job(void *data)
|
||||||
(!sd->focus_highlight.theme_changed))
|
(!sd->focus_highlight.theme_changed))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ((previous) && (sd->focus_highlight.prev.in_theme))
|
if (previous)
|
||||||
{
|
{
|
||||||
evas_object_event_callback_del_full
|
evas_object_event_callback_del_full
|
||||||
(previous, EVAS_CALLBACK_DEL, _elm_win_focus_prev_target_del, data);
|
(previous, EVAS_CALLBACK_DEL, _elm_win_focus_prev_target_del, data);
|
||||||
elm_widget_signal_emit
|
if (sd->focus_highlight.prev.in_theme)
|
||||||
(previous, "elm,action,focus_highlight,hide", "elm");
|
elm_widget_signal_emit
|
||||||
|
(previous, "elm,action,focus_highlight,hide", "elm");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!target)
|
if (!target)
|
||||||
|
|
Loading…
Reference in New Issue