cedric pushed a commit to branch enlightenment-0.17. http://git.enlightenment.org/core/enlightenment.git/commit/?id=c21bbecf264204b60a096b89ada4fac6e4da6ca5
commit c21bbecf264204b60a096b89ada4fac6e4da6ca5 Author: Mike Blumenkrantz <m.blumenk...@samsung.com> Date: Mon Jun 10 13:34:04 2013 +0100 fix a crazy fileman bug where calculating the size of the tooltip would cause a mouse out event on the icon, deleting the tooltip while it was being created --- src/modules/fileman/e_fwin.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/modules/fileman/e_fwin.c b/src/modules/fileman/e_fwin.c index e0b8d2f..7e5ce70 100644 --- a/src/modules/fileman/e_fwin.c +++ b/src/modules/fileman/e_fwin.c @@ -41,6 +41,7 @@ struct _E_Fwin const char *theme_file; Ecore_Timer *popup_timer; + Ecore_Timer *popup_del_job; Eina_List *popup_handlers; E_Fm2_Icon_Info *popup_icon; E_Popup *popup; @@ -730,6 +731,7 @@ _e_fwin_free(E_Fwin *fwin) e_object_del(E_OBJECT(fwin->fad->dia)); fwin->fad = NULL; } + if (fwin->popup_del_job) ecore_job_del(fwin->popup_del_job); if (fwin->popup) e_object_del(E_OBJECT(fwin->popup)); if (fwin->popup_timer) ecore_timer_del(fwin->popup_timer); fwin->popup_timer = NULL; @@ -854,15 +856,20 @@ _e_fwin_icon_popup(void *data) } static void +_e_fwin_icon_popup_del(E_Fwin *fwin) +{ + E_FREE_FUNC(fwin->popup, e_object_del); + fwin->popup_icon = NULL; + fwin->popup_del_job = NULL; +} + +static void _e_fwin_icon_mouse_out(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) { E_Fwin *fwin = data; - if (fwin->popup_timer) ecore_timer_del(fwin->popup_timer); - if (fwin->popup) e_object_del(E_OBJECT(fwin->popup)); - fwin->popup = NULL; - fwin->popup_timer = NULL; - fwin->popup_icon = NULL; + E_FREE_FUNC(fwin->popup_timer, ecore_timer_del); + if (!fwin->popup_del_job) fwin->popup_del_job = ecore_job_add((Ecore_Cb)_e_fwin_icon_popup_del, fwin); } static void --