aboutsummaryrefslogtreecommitdiffstats
path: root/legacy/elementary/src/lib/elm_win.c
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:54:15 +0900
commit4f5f6a9651a4b7d5baed505f229882f6640df4db (patch)
treeff3585ea2d19fb31fb2a8245ea88e185fb824711 /legacy/elementary/src/lib/elm_win.c
parentslideshow/test: Fixed warning of uninitailised variable (diff)
downloadefl-4f5f6a9651a4b7d5baed505f229882f6640df4db.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
Diffstat (limited to 'legacy/elementary/src/lib/elm_win.c')
-rw-r--r--legacy/elementary/src/lib/elm_win.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/legacy/elementary/src/lib/elm_win.c b/legacy/elementary/src/lib/elm_win.c
index 67114b4081..8674105ea9 100644
--- a/legacy/elementary/src/lib/elm_win.c
+++ b/legacy/elementary/src/lib/elm_win.c
@@ -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)