aboutsummaryrefslogtreecommitdiffstats
path: root/legacy/elementary/src/lib/elm_win.c
diff options
context:
space:
mode:
authorWooHyun Jung <woohyun0705@gmail.com>2011-09-07 01:41:19 +0000
committerWooHyun Jung <woohyun0705@gmail.com>2011-09-07 01:41:19 +0000
commit52b792ce752cedb813c32012c485d80c6b458932 (patch)
treedea553da058546f40a5a4d0cb1caf9032078b89a /legacy/elementary/src/lib/elm_win.c
parentelementary: use sorted state to improve gengrid and genlist. (diff)
downloadefl-52b792ce752cedb813c32012c485d80c6b458932.tar.gz
elementary/elm_win : Elementary's focus control should be started
after the canvas gets focus. There can be a case that the canvas doesn't get focus when elm_win is shown. SVN revision: 63240
Diffstat (limited to 'legacy/elementary/src/lib/elm_win.c')
-rw-r--r--legacy/elementary/src/lib/elm_win.c12
1 files changed, 9 insertions, 3 deletions
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);
}