make elm inlined window focus in work and thus key events work. :)

SVN revision: 75534
This commit is contained in:
Carsten Haitzler 2012-08-22 10:02:32 +00:00
parent 782444ca1a
commit 6faa1f83da
3 changed files with 25 additions and 1 deletions

View File

@ -134,6 +134,14 @@ fill(Evas_Object *win, Eina_Bool do_bg)
evas_object_show(sc);
}
static void
cb_mouse_down(void *data __UNUSED__, Evas *evas __UNUSED__, Evas_Object *obj, void *event_info)
{
Evas_Event_Mouse_Down *ev = event_info;
if (ev->button == 1) elm_object_focus_set(obj, EINA_TRUE);
}
static void
cb_mouse_move(void *data, Evas *evas __UNUSED__, Evas_Object *obj, void *event_info)
{
@ -219,6 +227,7 @@ test_win_inline(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_
evas_object_show(bg);
win2 = elm_win_add(win, "inlined", ELM_WIN_INLINED_IMAGE);
evas_object_event_callback_add(elm_win_inlined_image_object_get(win2), EVAS_CALLBACK_MOUSE_DOWN, cb_mouse_down, NULL);
fill(win2, EINA_TRUE);
evas_object_move(win2, 20, 60);
@ -230,6 +239,7 @@ test_win_inline(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_
evas_object_show(win2);
win3 = elm_win_add(win, "inlined", ELM_WIN_INLINED_IMAGE);
evas_object_event_callback_add(elm_win_inlined_image_object_get(win3), EVAS_CALLBACK_MOUSE_DOWN, cb_mouse_down, NULL);
elm_win_alpha_set(win3, EINA_TRUE);
fill(win3, EINA_FALSE);

View File

@ -1053,8 +1053,22 @@ elm_object_focus_set(Evas_Object *obj,
if (elm_widget_is(obj))
{
const char *type;
if (focus == elm_widget_focus_get(obj)) return;
// ugly, but, special case for inlined windows
type = evas_object_type_get(obj);
if ((type) && (!strcmp(type, "elm_win")))
{
Evas_Object *inlined = elm_win_inlined_image_object_get(obj);
if (inlined)
{
evas_object_focus_set(inlined, focus);
return;
}
}
if (focus)
elm_widget_focus_cycle(obj, ELM_FOCUS_NEXT);
else

View File

@ -680,7 +680,7 @@ _elm_win_focus_in(Ecore_Evas *ee)
EINA_SAFETY_ON_NULL_RETURN(sd);
obj = ELM_WIDGET_DATA(sd)->obj;
_elm_widget_top_win_focused_set(obj, EINA_TRUE);
if (!elm_widget_focus_order_get(obj))
{