* only change the window title if the new title is different from
[modest] / src / widgets / modest-window-mgr.c
index 47ec037..6d03595 100644 (file)
@@ -354,10 +354,10 @@ modest_window_mgr_register_header (ModestWindowMgr *self,  TnyHeader *header, co
                uid = g_strdup (alt_uid);
        
        if (!has_uid (priv->preregistered_uids, uid)) {
-               g_debug ("registering new uid %s", uid);
+               MODEST_DEBUG_BLOCK(g_debug ("registering new uid %s", uid););
                priv->preregistered_uids = append_uid (priv->preregistered_uids, uid);
        } else
-               g_debug ("already had uid %s", uid);
+               MODEST_DEBUG_BLOCK(g_debug ("already had uid %s", uid););
        
        g_free (uid);
 }
@@ -375,17 +375,17 @@ modest_window_mgr_unregister_header (ModestWindowMgr *self,  TnyHeader *header)
        uid = modest_tny_folder_get_header_unique_id (header);
 
        if (!has_uid (priv->preregistered_uids, uid)) {
-               g_debug ("trying to unregister non-existing uid %s", uid);
+               MODEST_DEBUG_BLOCK(g_debug ("trying to unregister non-existing uid %s", uid););
                priv->preregistered_uids = append_uid (priv->preregistered_uids, uid);
        } else
-               g_debug ("unregistering uid %s", uid);
+               MODEST_DEBUG_BLOCK(g_debug ("unregistering uid %s", uid););
        
        if (has_uid (priv->preregistered_uids, uid)) {
                priv->preregistered_uids = remove_uid (priv->preregistered_uids, uid);
                if (has_uid (priv->preregistered_uids, uid))
                        g_debug ("BUG: uid %s NOT removed", uid);
                else
-                       g_debug ("uid %s removed", uid);
+                       MODEST_DEBUG_BLOCK(g_debug ("uid %s removed", uid););
        }
                
        g_free (uid);
@@ -595,7 +595,7 @@ modest_window_mgr_register_window (ModestWindowMgr *self,
                if (!has_uid (priv->preregistered_uids, uid)) 
                        g_debug ("weird: no uid for window (%s)", uid);
                
-               g_debug ("registering window for %s", uid ? uid : "<none>");
+               MODEST_DEBUG_BLOCK(g_debug ("registering window for %s", uid ? uid : "<none>"););
                
                priv->preregistered_uids = 
                        remove_uid (priv->preregistered_uids,
@@ -605,7 +605,7 @@ modest_window_mgr_register_window (ModestWindowMgr *self,
                const gchar *uid = modest_msg_edit_window_get_message_uid
                        (MODEST_MSG_EDIT_WINDOW (window));
                
-               g_debug ("registering window for %s", uid);
+               MODEST_DEBUG_BLOCK(g_debug ("registering window for %s", uid););
 
                priv->preregistered_uids = 
                        remove_uid (priv->preregistered_uids,
@@ -783,6 +783,26 @@ modest_window_mgr_unregister_window (ModestWindowMgr *self,
        handler_id = *tmp;
        g_hash_table_remove (priv->destroy_handlers, window);
 
+       /* cancel open and receive operations */
+       if (MODEST_IS_MSG_VIEW_WINDOW (window)) {
+               ModestMailOperationTypeOperation type;
+               GSList* pending_ops = NULL;
+               GSList* tmp_list = NULL;
+               pending_ops = modest_mail_operation_queue_get_by_source (
+                               modest_runtime_get_mail_operation_queue (), 
+                               G_OBJECT (window));
+               while (pending_ops != NULL) {
+                       type = modest_mail_operation_get_type_operation (MODEST_MAIL_OPERATION (pending_ops->data));
+                       if (type == MODEST_MAIL_OPERATION_TYPE_RECEIVE || type == MODEST_MAIL_OPERATION_TYPE_OPEN) {
+                               modest_mail_operation_cancel (pending_ops->data);
+                       }
+                       g_object_unref (G_OBJECT (pending_ops->data));
+                       tmp_list = pending_ops;
+                       pending_ops = g_slist_next (pending_ops);
+                       g_slist_free_1 (tmp_list);
+               }
+       }
+       
        /* Disconnect the "delete-event" handler, we won't need it anymore */
        g_signal_handler_disconnect (window, handler_id);