raster pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=3f5699b2d6ed39322c4333ef34305ab445677435

commit 3f5699b2d6ed39322c4333ef34305ab445677435
Author: Carsten Haitzler (Rasterman) <ras...@rasterman.com>
Date:   Tue Feb 18 16:15:55 2014 +0900

    fix more complaints on inwin shutdown and focus stuff
    
    this fixes the rest of T958
---
 src/lib/elm_win.c | 98 ++++++++++++++++++++++++++++++++-----------------------
 1 file changed, 58 insertions(+), 40 deletions(-)

diff --git a/src/lib/elm_win.c b/src/lib/elm_win.c
index 340517e..7995382 100644
--- a/src/lib/elm_win.c
+++ b/src/lib/elm_win.c
@@ -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
@@ -1469,16 +1472,70 @@ _elm_win_focus_highlight_shutdown(Elm_Win_Smart_Data 
*sd)
 }
 
 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,
                         Evas_Object *obj EINA_UNUSED,
                         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)
 {
    Elm_Win_Smart_Data *sd = _pd;
@@ -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
@@ -2653,44 +2709,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)
 {
    evas_object_image_alpha_set(sd->img_obj, EINA_FALSE);

-- 


Reply via email to