discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=8f99680994877cf11b6f407b5c7c3a1d00bf7ae5

commit 8f99680994877cf11b6f407b5c7c3a1d00bf7ae5
Author: Mike Blumenkrantz <zm...@samsung.com>
Date:   Thu Jan 16 11:17:35 2014 -0500

    fix ibar menu mouseover crash when dragging
---
 src/modules/ibar/e_mod_main.c | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/src/modules/ibar/e_mod_main.c b/src/modules/ibar/e_mod_main.c
index 84b825b..1e5abac 100644
--- a/src/modules/ibar/e_mod_main.c
+++ b/src/modules/ibar/e_mod_main.c
@@ -838,6 +838,22 @@ _ibar_icon_free(IBar_Icon *ic)
    E_FREE_FUNC(ic->reset_timer, ecore_timer_del);
    if (ic->app) efreet_desktop_unref(ic->app);
    ic->exe_current = NULL;
+   evas_object_event_callback_del_full(ic->o_holder, EVAS_CALLBACK_MOUSE_IN,
+                                  _ibar_cb_icon_mouse_in, ic);
+   evas_object_event_callback_del_full(ic->o_holder, EVAS_CALLBACK_MOUSE_OUT,
+                                  _ibar_cb_icon_mouse_out, ic);
+   evas_object_event_callback_del_full(ic->o_holder, EVAS_CALLBACK_MOUSE_DOWN,
+                                  _ibar_cb_icon_mouse_down, ic);
+   evas_object_event_callback_del_full(ic->o_holder, EVAS_CALLBACK_MOUSE_UP,
+                                  _ibar_cb_icon_mouse_up, ic);
+   evas_object_event_callback_del_full(ic->o_holder, EVAS_CALLBACK_MOUSE_MOVE,
+                                  _ibar_cb_icon_mouse_move, ic);
+   evas_object_event_callback_del_full(ic->o_holder, EVAS_CALLBACK_MOUSE_WHEEL,
+                                  _ibar_cb_icon_wheel, ic);
+   evas_object_event_callback_del_full(ic->o_holder, EVAS_CALLBACK_MOVE,
+                                  _ibar_cb_icon_move, ic);
+   evas_object_event_callback_del_full(ic->o_holder, EVAS_CALLBACK_RESIZE,
+                                  _ibar_cb_icon_resize, ic);
    ic->ibar->not_in_order_count -= ic->not_in_order;
    if (ic->ibar->ic_drop_before == ic)
      ic->ibar->ic_drop_before = NULL;
@@ -1045,6 +1061,7 @@ _ibar_cb_icon_menu_hidden(void *data, Evas_Object *obj 
EINA_UNUSED, const char *
 
    E_OBJECT_DEL_SET(ic->menu, NULL);
    E_FREE_FUNC(ic->menu, e_object_del);
+   E_FREE_FUNC(ic->hide_timer, ecore_timer_del);
 }
 
 static void
@@ -1204,7 +1221,7 @@ _ibar_icon_menu_hide(IBar_Icon *ic, Eina_Bool grab)
 {
    if (!ic->menu) return;
    if (ic->menu_grabbed != grab) return;
-   if (ic->ibar->menu_icon == ic)
+   if (ic->ibar && (ic->ibar->menu_icon == ic))
      ic->ibar->menu_icon = NULL;
    E_FREE_FUNC(ic->hide_timer, ecore_timer_del);
    ic->menu_grabbed = EINA_FALSE;

-- 


Reply via email to