diff --git a/src/views/gcal-month-view.c b/src/views/gcal-month-view.c index 79a9e525..9355b168 100644 --- a/src/views/gcal-month-view.c +++ b/src/views/gcal-month-view.c @@ -162,8 +162,6 @@ enum N_PROPS }; -static gpointer month_view_parent_class = NULL; - /* * Auxiliary functions @@ -1825,7 +1823,7 @@ gcal_month_view_destroyed (GtkWidget *widget) g_clear_object (&self->weather_service); } - GTK_WIDGET_CLASS (month_view_parent_class)->destroy ((GtkWidget*) G_TYPE_CHECK_INSTANCE_CAST (self, GTK_TYPE_GRID, GtkGrid)); + GTK_WIDGET_CLASS (gcal_month_view_parent_class)->destroy (widget); } static void @@ -2197,6 +2195,9 @@ gcal_month_view_class_init (GcalMonthViewClass *klass) widget_class->key_press_event = gcal_month_view_key_press; widget_class->scroll_event = gcal_month_view_scroll_event; + /* FIXME: Hack to deal with broken reference counts */ + widget_class->destroy = gcal_month_view_destroyed; + container_class = GTK_CONTAINER_CLASS (klass); container_class->add = gcal_month_view_add; container_class->remove = gcal_month_view_remove; @@ -2206,8 +2207,6 @@ gcal_month_view_class_init (GcalMonthViewClass *klass) g_object_class_override_property (object_class, PROP_MANAGER, "manager"); g_object_class_override_property (object_class, PROP_WEATHER_SERVICE, "weather-service"); - - gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/calendar/month-view.ui"); gtk_widget_class_bind_template_child (widget_class, GcalMonthView, label_0); @@ -2225,10 +2224,6 @@ gcal_month_view_class_init (GcalMonthViewClass *klass) gtk_widget_class_set_css_name (widget_class, "calendar-view"); g_type_ensure (GCAL_TYPE_MONTH_POPOVER); - - /* FIXME: Hack to deal with broken reference counts */ - month_view_parent_class = g_type_class_peek_parent (klass); - ((GtkWidgetClass *) klass)->destroy = (void (*) (GtkWidget *)) gcal_month_view_destroyed; } static void diff --git a/src/views/gcal-year-view.c b/src/views/gcal-year-view.c index ae1386ee..51483ab8 100644 --- a/src/views/gcal-year-view.c +++ b/src/views/gcal-year-view.c @@ -130,8 +130,6 @@ enum { LAST_PROP }; -static gpointer year_view_parent_class = NULL; - static void gcal_view_interface_init (GcalViewInterface *iface); static void gcal_data_model_subscriber_interface_init (ECalDataModelSubscriberInterface *iface); static void update_weather (GcalYearView *self); @@ -1611,15 +1609,13 @@ gcal_year_view_destroyed (GtkWidget *widget) { GcalYearView *self = GCAL_YEAR_VIEW (widget); - if (self->weather_service != NULL) + if (self->weather_service) { - g_signal_handlers_disconnect_by_func (self->weather_service, - (GCallback) weather_changed, - self); + g_signal_handlers_disconnect_by_func (self->weather_service, weather_changed, self); g_clear_object (&self->weather_service); } - GTK_WIDGET_CLASS (year_view_parent_class)->destroy ((GtkWidget*) G_TYPE_CHECK_INSTANCE_CAST (self, GTK_TYPE_BOX, GtkGrid)); + GTK_WIDGET_CLASS (gcal_year_view_parent_class)->destroy (widget); } static void @@ -1990,6 +1986,9 @@ gcal_year_view_class_init (GcalYearViewClass *klass) widget_class->size_allocate = gcal_year_view_size_allocate; widget_class->direction_changed = gcal_year_view_direction_changed; + /* Hack to deal with broken reference counts */ + widget_class->destroy = gcal_year_view_destroyed; + g_object_class_override_property (object_class, PROP_DATE, "active-date"); g_object_class_override_property (object_class, PROP_MANAGER, "manager"); g_object_class_override_property (object_class, PROP_WEATHER_SERVICE, "weather-service"); @@ -2028,10 +2027,6 @@ gcal_year_view_class_init (GcalYearViewClass *klass) gtk_widget_class_bind_template_callback (widget_class, popover_closed_cb); gtk_widget_class_set_css_name (widget_class, "calendar-view"); - - /* Hack to deal with broken reference counts: */ - year_view_parent_class = g_type_class_peek_parent (klass); - ((GtkWidgetClass *) klass)->destroy = (void (*) (GtkWidget *)) gcal_year_view_destroyed; } static void