discomfitor pushed a commit to branch master.

commit 38615a27d43cac5111fdcf6c30abce38868e0750
Author: Mike Blumenkrantz <[email protected]>
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 5f3133e..c6af440 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;
@@ -740,6 +741,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;
@@ -863,15 +865,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

-- 

------------------------------------------------------------------------------
How ServiceNow helps IT people transform IT departments:
1. A cloud service to automate IT design, transition and operations
2. Dashboards that offer high-level views of enterprise services
3. A single system of record for all IT processes
http://p.sf.net/sfu/servicenow-d2d-j

Reply via email to