From 52c6c2171d8fb3ace82a6cbd3d57990c9f9d8582 Mon Sep 17 00:00:00 2001 From: WooHyun Jung Date: Sat, 19 Mar 2011 15:13:14 +0000 Subject: [PATCH] From: WooHyun Jung Subject: [E-devel] [Patch] Focus issue in elm_widget.c I've checked there were some focus problems when an object is hidden. So I made patch for that ~ SVN revision: 57898 --- legacy/elementary/src/lib/elm_widget.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/legacy/elementary/src/lib/elm_widget.c b/legacy/elementary/src/lib/elm_widget.c index 6d766bbbaf..5535c7b4f9 100644 --- a/legacy/elementary/src/lib/elm_widget.c +++ b/legacy/elementary/src/lib/elm_widget.c @@ -177,6 +177,12 @@ _sub_obj_del(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event_info evas_object_smart_callback_call(sd->obj, "sub-object-del", obj); } +static void +_sub_obj_hide(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__) +{ + _if_focused_revert(obj, EINA_TRUE); +} + static void _sub_obj_mouse_down(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__) { @@ -735,7 +741,9 @@ elm_widget_sub_object_add(Evas_Object *obj, Evas_Object *sobj) sd->subobjs = eina_list_append(sd->subobjs, sobj); evas_object_data_set(sobj, "elm-parent", obj); - evas_object_event_callback_add(sobj, EVAS_CALLBACK_DEL, _sub_obj_del, sd); + evas_object_event_callback_add(sobj, EVAS_CALLBACK_DEL, _sub_obj_del, sd); + if (_elm_widget_is(sobj)) + evas_object_event_callback_add(sobj, EVAS_CALLBACK_HIDE, _sub_obj_hide, sd); evas_object_smart_callback_call(obj, "sub-object-add", sobj); scale = elm_widget_scale_get(sobj); th = elm_widget_theme_get(sobj); @@ -788,6 +796,9 @@ elm_widget_sub_object_del(Evas_Object *obj, Evas_Object *sobj) sd->subobjs = eina_list_remove(sd->subobjs, sobj); evas_object_event_callback_del_full(sobj, EVAS_CALLBACK_DEL, _sub_obj_del, sd); + if (_elm_widget_is(sobj)) + evas_object_event_callback_del_full(sobj, EVAS_CALLBACK_HIDE, + _sub_obj_hide, sd); evas_object_smart_callback_call(obj, "sub-object-del", sobj); } @@ -804,6 +815,8 @@ elm_widget_resize_object_set(Evas_Object *obj, Evas_Object *sobj) { Smart_Data *sd2 = evas_object_smart_data_get(sd->resize_obj); if (sd2) sd2->parent_obj = NULL; + evas_object_event_callback_del_full(sd->resize_obj, EVAS_CALLBACK_HIDE, + _sub_obj_hide, sd); } evas_object_event_callback_del_full(sd->resize_obj, EVAS_CALLBACK_DEL, _sub_obj_del, sd); @@ -823,6 +836,8 @@ elm_widget_resize_object_set(Evas_Object *obj, Evas_Object *sobj) { Smart_Data *sd2 = evas_object_smart_data_get(sobj); if (sd2) sd2->parent_obj = NULL; + evas_object_event_callback_del_full(sobj, EVAS_CALLBACK_HIDE, + _sub_obj_hide, sd); } evas_object_event_callback_del_full(sobj, EVAS_CALLBACK_DEL, _sub_obj_del, sd); @@ -842,6 +857,8 @@ elm_widget_resize_object_set(Evas_Object *obj, Evas_Object *sobj) { Smart_Data *sd2 = evas_object_smart_data_get(sd->resize_obj); if (sd2) sd2->parent_obj = obj; + evas_object_event_callback_add(sobj, EVAS_CALLBACK_HIDE, + _sub_obj_hide, sd); } evas_object_clip_set(sobj, evas_object_clip_get(obj)); evas_object_smart_member_add(sobj, obj); @@ -2661,7 +2678,6 @@ _smart_hide(Evas_Object *obj) if (evas_object_data_get(o, "_elm_leaveme")) continue; evas_object_hide(o); } - _if_focused_revert(obj, EINA_TRUE); } static void