gboolean notifications_enabled;
GHashTable *rules_map;
GSList *widget_rules;
+ gboolean window_weak_ref;
};
(GDestroyNotify) g_free,
(GDestroyNotify) g_object_unref);
priv->widget_rules = NULL;
+ priv->window_weak_ref = FALSE;
}
static void
priv = MODEST_DIMMING_RULES_GROUP_GET_PRIVATE(obj);
- if (priv->window)
+ if (priv->window && priv->window_weak_ref) {
g_object_weak_unref (G_OBJECT (priv->window), on_window_destroy, obj);
+ priv->window_weak_ref = FALSE;
+ }
G_OBJECT_CLASS(parent_class)->finalize (obj);
}
priv = MODEST_DIMMING_RULES_GROUP_GET_PRIVATE(self);
/* Set window to process dimming rules */
+ if (priv->window_weak_ref)
+ g_object_weak_unref ((GObject *) priv->window, on_window_destroy, self);
priv->window = MODEST_WINDOW (window);
+ g_object_weak_ref (G_OBJECT (window), on_window_destroy, self);
+ priv->window_weak_ref = TRUE;
dim_rule = modest_dimming_rule_new_from_widget (priv->window,
(ModestDimmingCallback) callback,
priv = MODEST_DIMMING_RULES_GROUP_GET_PRIVATE(self);
/* Set window to process dimming rules */
+ if (priv->window_weak_ref)
+ g_object_weak_unref ((GObject *) priv->window, on_window_destroy, self);
priv->window = MODEST_WINDOW (window);
g_object_weak_ref (G_OBJECT (window), on_window_destroy, self);
+ priv->window_weak_ref = TRUE;
/* Add dimming rules */
for (i=0; i < n_elements; i++) {