* Changes in the autotools stuff affecting a lot of platform dependent
[modest] / src / modest-dimming-rules-group.c
index a7459e3..14ea232 100644 (file)
@@ -37,7 +37,12 @@ static void modest_dimming_rules_group_class_init (ModestDimmingRulesGroupClass
 static void modest_dimming_rules_group_init       (ModestDimmingRulesGroup *obj);
 static void modest_dimming_rules_group_finalize   (GObject *obj);
 
+#ifndef MODEST_TOOLKIT_GTK
 static void _insensitive_press_callback (GtkWidget *widget, gpointer user_data);
+#endif
+
+static void on_window_destroy (gpointer data,
+                              GObject *object);
 
 static void _add_rule (ModestDimmingRulesGroup *self,
                       ModestDimmingRule *rule,
@@ -62,9 +67,6 @@ static GObjectClass *parent_class = NULL;
 
 static void _execute_dimming_rule (gpointer key, gpointer value, gpointer user_data);
 static void _execute_widget_dimming_rule (gpointer data, gpointer user_data);
-static void _insensitive_press_callback (GtkWidget *widget, gpointer user_data);
-
-
 
 GType
 modest_dimming_rules_group_get_type (void)
@@ -189,11 +191,12 @@ _add_rule (ModestDimmingRulesGroup *self,
        priv->window = MODEST_WINDOW (window);
 
        widget = modest_dimming_rule_get_widget (rule);
+#ifndef MODEST_TOOLKIT_GTK
        /* Connect insensitive-presss handler to show notifications */
        g_signal_connect (G_OBJECT (widget), "insensitive-press", 
                          G_CALLBACK (_insensitive_press_callback), 
                          rule);
-
+#endif
        /* Register new dimming rule */         
        modest_dimming_rule_set_group (rule, self);
        action_path = modest_dimming_rule_get_action_path (rule);
@@ -250,6 +253,7 @@ modest_dimming_rules_group_add_rules (ModestDimmingRulesGroup *self,
 
        /* Set window to process dimming rules */
        priv->window = MODEST_WINDOW (window);
+       g_object_weak_ref (G_OBJECT (window), on_window_destroy, self);
 
        /* Add dimming rules */
        for (i=0; i < n_elements; i++) {
@@ -296,6 +300,9 @@ modest_dimming_rules_group_execute (ModestDimmingRulesGroup *self)
        g_return_if_fail (MODEST_IS_DIMMING_RULES_GROUP(self));
        priv = MODEST_DIMMING_RULES_GROUP_GET_PRIVATE(self);
 
+       if (!priv->window)
+               return;
+
        /* Init dimming rules init data */
        state = modest_ui_dimming_rules_define_dimming_state (priv->window);    
        modest_window_set_dimming_state (priv->window, state);
@@ -327,6 +334,7 @@ _execute_widget_dimming_rule (gpointer data, gpointer user_data)
        modest_dimming_rule_process (MODEST_DIMMING_RULE(data));
 }
 
+#ifndef MODEST_TOOLKIT_GTK
 static void
 _insensitive_press_callback (GtkWidget *widget, gpointer user_data)
 {
@@ -357,3 +365,14 @@ _insensitive_press_callback (GtkWidget *widget, gpointer user_data)
        if (notification != NULL)
                g_free(notification);
 }
+#endif
+
+static void
+on_window_destroy (gpointer data,
+                  GObject *object)
+{
+       ModestDimmingRulesGroup *self = MODEST_DIMMING_RULES_GROUP (data);
+       ModestDimmingRulesGroupPrivate *priv = MODEST_DIMMING_RULES_GROUP_GET_PRIVATE (self);
+
+       priv->window = NULL;
+}