* Fixes NB#87456, close "remove attachment" dialog with its parent
[modest] / src / modest-ui-dimming-manager.c
index ba0c0c5..c256a2a 100644 (file)
@@ -105,6 +105,15 @@ modest_ui_dimming_manager_init (ModestUIDimmingManager *obj)
 }
 
 static void
+remove_all_timeouts (gpointer key, 
+                    gpointer value, 
+                    gpointer user_data)
+{
+       if (GPOINTER_TO_INT (value) > 0)
+               g_source_remove (GPOINTER_TO_INT (value));
+}
+
+static void
 modest_ui_dimming_manager_finalize (GObject *obj)
 {
        ModestUIDimmingManagerPrivate *priv;
@@ -114,8 +123,14 @@ modest_ui_dimming_manager_finalize (GObject *obj)
        if (priv->groups_map != NULL)
                g_hash_table_unref (priv->groups_map);
 
-       if (priv->delayed_calls != NULL)
+       if (priv->delayed_calls != NULL) {
+               /* Remove all pending calls */
+               g_hash_table_foreach (priv->delayed_calls,
+                                     remove_all_timeouts,
+                                     NULL);
+
                g_hash_table_unref (priv->delayed_calls);
+       }
 
        G_OBJECT_CLASS(parent_class)->finalize (obj);
 }
@@ -206,8 +221,8 @@ process_dimming_rules_delayed_destroyer (gpointer data)
 
        priv = MODEST_UI_DIMMING_MANAGER_GET_PRIVATE(helper->manager);
        g_hash_table_remove (priv->delayed_calls, helper->name);
-       g_object_unref (helper->manager);
        g_free (helper->name);
+       g_object_unref (helper->manager);
        g_slice_free (DelayedDimmingRules, helper);
 }