[gnome-calendar/gbsneto/timeline: 31/36] event-widget: Remove idle on destroy
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-calendar/gbsneto/timeline: 31/36] event-widget: Remove idle on destroy
- Date: Thu, 2 Apr 2020 00:09:22 +0000 (UTC)
commit f052cb6589be023219ecf484cab6299a2bf07cc7
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]