summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSangHyeon Lee <sh10233.lee@samsung.com>2015-04-06 10:54:15 +0900
committerChunEon Park <hermet@hermet.pe.kr>2015-04-06 10:55:11 +0900
commit2214d290b1f1492d76c1089a399104d91e0bd7e4 (patch)
treeac49f1c6d2a09202e5f377a8bb0a4ac213a1e34c
parent544a9ad55bde6900f97f4586505acded242b9d32 (diff)
downloadelementary-2214d290b1f1492d76c1089a399104d91e0bd7e4.tar.gz
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
-rw-r--r--src/lib/elm_win.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/lib/elm_win.c b/src/lib/elm_win.c
index 57935f0f5..717017b28 100644
--- a/src/lib/elm_win.c
+++ b/src/lib/elm_win.c
@@ -920,12 +920,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)