[evolution/evolution-3-12] Bug 733917 - Critical warning when hiding the tooltip above the event



commit 12c30c916e92db5689f2b2b367568403ad1537fe
Author: Milan Crha <mcrha redhat com>
Date:   Thu Jul 31 17:24:27 2014 +0200

    Bug 733917 - Critical warning when hiding the tooltip above the event

 calendar/gui/e-week-view.c |   34 ++++++++++++++++++++++++++++------
 1 files changed, 28 insertions(+), 6 deletions(-)
---
diff --git a/calendar/gui/e-week-view.c b/calendar/gui/e-week-view.c
index 317a78c..1c5a189 100644
--- a/calendar/gui/e-week-view.c
+++ b/calendar/gui/e-week-view.c
@@ -3294,6 +3294,28 @@ tooltip_destroy (EWeekView *week_view,
 }
 
 static gboolean
+e_week_view_handle_tooltip_timeout (gpointer user_data)
+{
+       ECalendarViewEventData *data = user_data;
+
+       g_return_val_if_fail (data != NULL, FALSE);
+
+       return e_calendar_view_get_tooltips (data);
+}
+
+static void
+e_week_view_destroy_tooltip_timeout_data (gpointer ptr)
+{
+       ECalendarViewEventData *data = ptr;
+
+       if (data) {
+               g_object_set_data ((GObject *) data->cal_view, "tooltip-timeout", NULL);
+               g_object_unref (data->cal_view);
+               g_free (data);
+       }
+}
+
+static gboolean
 tooltip_event_cb (GnomeCanvasItem *item,
                   GdkEvent *event,
                   EWeekView *view)
@@ -3315,14 +3337,14 @@ tooltip_event_cb (GnomeCanvasItem *item,
                        pevent->y = ((GdkEventCrossing *) event)->y_root;
                        pevent->tooltip = NULL;
 
-                       data->cal_view = (ECalendarView *) view;
+                       data->cal_view = g_object_ref (view);
                        data->day = -1;
                        data->event_num = event_num;
                        data->get_view_event = (ECalendarViewEvent * (*)(ECalendarView *, int, gint)) 
tooltip_get_view_event;
                        pevent->timeout = e_named_timeout_add_full (
                                G_PRIORITY_DEFAULT, 500,
-                               (GSourceFunc) e_calendar_view_get_tooltips,
-                               data, (GDestroyNotify) g_free);
+                               e_week_view_handle_tooltip_timeout,
+                               data, e_week_view_destroy_tooltip_timeout_data);
                        g_object_set_data ((GObject *) view, "tooltip-timeout", GUINT_TO_POINTER 
(pevent->timeout));
 
                        return TRUE;
@@ -3992,14 +4014,14 @@ e_week_view_on_text_item_event (GnomeCanvasItem *item,
                pevent->y = (gint) event_y_root;
                pevent->tooltip = NULL;
 
-               data->cal_view = (ECalendarView *) week_view;
+               data->cal_view = g_object_ref (week_view);
                data->day = -1;
                data->event_num = nevent;
                data->get_view_event = (ECalendarViewEvent * (*)(ECalendarView *, int, gint)) 
tooltip_get_view_event;
                pevent->timeout = e_named_timeout_add_full (
                        G_PRIORITY_DEFAULT, 500,
-                       (GSourceFunc) e_calendar_view_get_tooltips,
-                       data, (GDestroyNotify) g_free);
+                       e_week_view_handle_tooltip_timeout,
+                       data, e_week_view_destroy_tooltip_timeout_data);
                g_object_set_data ((GObject *) week_view, "tooltip-timeout", GUINT_TO_POINTER 
(pevent->timeout));
 
                return TRUE;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]