diff --git a/legacy/elementary/src/lib/elm_win.c b/legacy/elementary/src/lib/elm_win.c index e414f3805e..804c154d4a 100644 --- a/legacy/elementary/src/lib/elm_win.c +++ b/legacy/elementary/src/lib/elm_win.c @@ -26,6 +26,7 @@ struct _Elm_Win } shot; Eina_Bool autodel : 1; int *autodel_clear, rot; + int show_count; struct { int x, y; } screen; @@ -306,7 +307,12 @@ _elm_win_focus_in(Ecore_Evas *ee) if (!obj) return; win = elm_widget_data_get(obj); if (!win) return; - if (!elm_widget_focus_get(win->win_obj)) + if (win->show_count == 1) + { + elm_object_focus_set(win->win_obj, EINA_TRUE); + win->show_count++; + } + else elm_widget_focus_restore(win->win_obj); evas_object_smart_callback_call(win->win_obj, SIG_FOCUS_IN, NULL); win->focus_highlight.cur.visible = EINA_TRUE; @@ -433,11 +439,11 @@ _deferred_ecore_evas_free(void *data) } static void -_elm_win_obj_callback_show(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__) +_elm_win_obj_callback_show(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) { Elm_Win *win = data; - elm_object_focus_set(obj, EINA_TRUE); + if (!win->show_count) win->show_count++; if (win->shot.info) _shot_handle(win); }