woohyun pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=cc0ea070b5e545f57832960c888d7591fafa1218
commit cc0ea070b5e545f57832960c888d7591fafa1218 Author: WooHyun Jung <wh0705.j...@samsung.com> Date: Sat Jan 17 16:29:46 2015 +0900 widget: elm_win can be unfocused only when its ecore_evas loses focus. --- src/lib/elm_widget.c | 34 ++++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/src/lib/elm_widget.c b/src/lib/elm_widget.c index 39aa51c..ee19dbb 100644 --- a/src/lib/elm_widget.c +++ b/src/lib/elm_widget.c @@ -411,8 +411,38 @@ _if_focused_revert(Evas_Object *obj, (top, &newest_focus_order, can_focus_only); if (newest) { - elm_object_focus_set(newest, EINA_FALSE); - elm_object_focus_set(newest, EINA_TRUE); + if (newest == top) + { + ELM_WIDGET_DATA_GET(newest, sd2); + if (!sd2) return; + + if (!elm_widget_focus_get(newest)) + elm_widget_focus_steal(newest); + else + { + if (sd2->resize_obj && elm_widget_focus_get(sd2->resize_obj)) + elm_widget_focused_object_clear(sd2->resize_obj); + else + { + const Eina_List *l; + Evas_Object *child; + EINA_LIST_FOREACH(sd2->subobjs, l, child) + { + if (elm_widget_focus_get(child)) + { + elm_widget_focused_object_clear(child); + break; + } + } + } + } + evas_object_focus_set(newest, EINA_TRUE); + } + else + { + elm_object_focus_set(newest, EINA_FALSE); + elm_object_focus_set(newest, EINA_TRUE); + } } } } --