fix more complaints on inwin shutdown and focus stuff

this fixes the rest of T958
This commit is contained in:
Carsten Haitzler 2014-02-18 16:15:55 +09:00
parent 7201bf91ff
commit a4cbdd7c39
1 changed files with 58 additions and 40 deletions

View File

@ -234,6 +234,9 @@ _elm_win_on_resize_obj_changed_size_hints(void *data,
Evas *e,
Evas_Object *obj,
void *event_info);
static void
_elm_win_img_callbacks_del(Evas_Object *obj, Evas_Object *imgobj);
#ifdef HAVE_ELEMENTARY_X
static void _elm_win_xwin_update(Elm_Win_Smart_Data *sd);
#endif
@ -1468,6 +1471,44 @@ _elm_win_focus_highlight_shutdown(Elm_Win_Smart_Data *sd)
_elm_win_object_focus_out, sd->obj);
}
static void
_win_img_hide(void *data,
Evas *e EINA_UNUSED,
Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
elm_widget_focus_hide_handle(data);
}
static void
_win_img_mouse_up(void *data,
Evas *e EINA_UNUSED,
Evas_Object *obj EINA_UNUSED,
void *event_info)
{
Evas_Event_Mouse_Up *ev = event_info;
if (!(ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD))
elm_widget_focus_mouse_up_handle(data);
}
static void
_win_img_focus_in(void *data,
Evas *e EINA_UNUSED,
Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
elm_widget_focus_steal(data);
}
static void
_win_img_focus_out(void *data,
Evas *e EINA_UNUSED,
Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
elm_widget_focused_object_clear(data);
}
static void
_elm_win_on_img_obj_del(void *data,
Evas *e EINA_UNUSED,
@ -1475,9 +1516,25 @@ _elm_win_on_img_obj_del(void *data,
void *event_info EINA_UNUSED)
{
ELM_WIN_DATA_GET(data, sd);
_elm_win_img_callbacks_del(sd->obj, sd->img_obj);
sd->img_obj = NULL;
}
static void
_elm_win_img_callbacks_del(Evas_Object *obj, Evas_Object *imgobj)
{
evas_object_event_callback_del_full
(imgobj, EVAS_CALLBACK_DEL, _elm_win_on_img_obj_del, obj);
evas_object_event_callback_del_full
(imgobj, EVAS_CALLBACK_HIDE, _win_img_hide, obj);
evas_object_event_callback_del_full
(imgobj, EVAS_CALLBACK_MOUSE_UP, _win_img_mouse_up, obj);
evas_object_event_callback_del_full
(imgobj, EVAS_CALLBACK_FOCUS_IN, _win_img_focus_in, obj);
evas_object_event_callback_del_full
(imgobj, EVAS_CALLBACK_FOCUS_OUT, _win_img_focus_out, obj);
}
static void
_elm_win_smart_del(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
{
@ -1526,8 +1583,7 @@ _elm_win_smart_del(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
if (sd->img_obj)
{
evas_object_event_callback_del_full
(sd->img_obj, EVAS_CALLBACK_DEL, _elm_win_on_img_obj_del, obj);
_elm_win_img_callbacks_del(obj, sd->img_obj);
sd->img_obj = NULL;
}
else
@ -2652,44 +2708,6 @@ _debug_key_down(void *data EINA_UNUSED,
#endif
static void
_win_img_hide(void *data,
Evas *e EINA_UNUSED,
Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
elm_widget_focus_hide_handle(data);
}
static void
_win_img_mouse_up(void *data,
Evas *e EINA_UNUSED,
Evas_Object *obj EINA_UNUSED,
void *event_info)
{
Evas_Event_Mouse_Up *ev = event_info;
if (!(ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD))
elm_widget_focus_mouse_up_handle(data);
}
static void
_win_img_focus_in(void *data,
Evas *e EINA_UNUSED,
Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
elm_widget_focus_steal(data);
}
static void
_win_img_focus_out(void *data,
Evas *e EINA_UNUSED,
Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
elm_widget_focused_object_clear(data);
}
static void
_win_inlined_image_set(Elm_Win_Smart_Data *sd)
{