[gnome-calendar/gnome-3-36] event-widget: Remove idle on destroy



commit 2269d4b4bedb0dc542be84781c3aca3b56facaf7
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Fri Mar 27 22:13:49 2020 -0300

    event-widget: Remove idle on destroy
    
    Finalize may be too late for us, since a widget
    may be destroyed long before it's finalized.
    
    Remove the idle timer on destroy then.

 src/gui/gcal-event-widget.c | 25 ++++++++++++++++++-------
 1 file changed, 18 insertions(+), 7 deletions(-)
---
diff --git a/src/gui/gcal-event-widget.c b/src/gui/gcal-event-widget.c
index 93303eec..99c9286f 100644
--- a/src/gui/gcal-event-widget.c
+++ b/src/gui/gcal-event-widget.c
@@ -765,6 +765,23 @@ gcal_event_widget_unrealize (GtkWidget *widget)
   GTK_WIDGET_CLASS (gcal_event_widget_parent_class)->unrealize (widget);
 }
 
+static void
+gcal_event_widget_destroy (GtkWidget *widget)
+{
+  GcalEventWidget *self;
+
+  self = GCAL_EVENT_WIDGET (widget);
+
+  /* remove timeouts */
+  if (self->vertical_label_source_id > 0)
+    {
+      g_source_remove (self->vertical_label_source_id);
+      self->vertical_label_source_id = 0;
+    }
+
+  GTK_WIDGET_CLASS (gcal_event_widget_parent_class)->destroy (widget);
+}
+
 /*
  * GObject overrides
  */
@@ -865,13 +882,6 @@ gcal_event_widget_finalize (GObject *object)
   g_clear_object (&self->event);
   g_clear_object (&self->context);
 
-  /* remove timeouts */
-  if (self->vertical_label_source_id > 0)
-    {
-      g_source_remove (self->vertical_label_source_id);
-      self->vertical_label_source_id = 0;
-    }
-
   G_OBJECT_CLASS (gcal_event_widget_parent_class)->finalize (object);
 }
 
@@ -897,6 +907,7 @@ gcal_event_widget_class_init (GcalEventWidgetClass *klass)
   widget_class->scroll_event = gcal_event_widget_scroll_event;
   widget_class->unmap = gcal_event_widget_unmap;
   widget_class->unrealize = gcal_event_widget_unrealize;
+  widget_class->destroy = gcal_event_widget_destroy;
 
   /**
    * GcalEventWidget::context:


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