* Added some unit tests for ModestTextUtils
[modest] / src / widgets / modest-header-view.c
index bdb40f8..9b4449c 100644 (file)
@@ -68,7 +68,7 @@ struct _ModestHeaderViewPrivate {
                                                 ModestHeaderViewPrivate))
 
 typedef struct _GetMsgAsyncHelper {
-       ModestHeaderView *view;
+       ModestHeaderView *self;
        TnyHeader *header;
 } GetMsgAsyncHelper;
 
@@ -894,18 +894,20 @@ get_msg_cb (TnyFolder *folder, TnyMsg *msg, GError **err, gpointer user_data)
 
        helper = (GetMsgAsyncHelper *) user_data;
 
-       if (!msg) {
-               g_signal_emit (G_OBJECT(helper->view), signals[ITEM_NOT_FOUND_SIGNAL], 0,
-                              MODEST_ITEM_TYPE_MESSAGE);
-               return;
-       }
-                                       
-       g_signal_emit (G_OBJECT(helper->view), signals[MESSAGE_SELECTED_SIGNAL], 0,
-                      msg);
+       if (msg) {
+               g_signal_emit (G_OBJECT(helper->self), signals[MESSAGE_SELECTED_SIGNAL], 0,
+                              msg);
        
-       /* mark message as seen; _set_flags crashes, bug in tinymail? */
-       header_flags = tny_header_get_flags (helper->header);
-       tny_header_set_flags (helper->header, header_flags | TNY_HEADER_FLAG_SEEN);
+               /* mark message as seen; _set_flags crashes, bug in tinymail? */
+               header_flags = tny_header_get_flags (helper->header);
+               tny_header_set_flags (helper->header, header_flags | TNY_HEADER_FLAG_SEEN);
+       } else {
+               g_signal_emit (G_OBJECT(helper->self), signals[ITEM_NOT_FOUND_SIGNAL], 
+                              0, MODEST_ITEM_TYPE_MESSAGE);
+       }
+
+       /* Frees */
+       g_slice_free (GetMsgAsyncHelper, helper);
 }
 
 static void
@@ -945,14 +947,30 @@ on_selection_changed (GtkTreeSelection *sel, gpointer user_data)
        }
 
        helper = g_slice_new0 (GetMsgAsyncHelper);
-       helper->view = self;
+       helper->self = self;
        helper->header = header;
 
        /* Get message asynchronously. The callback will issue a
           signal if the message was retrieved correctly and then will
-          set the header flags as read. Tinymail will free the helper */       
-       tny_folder_get_msg_async (TNY_FOLDER(folder), header, get_msg_cb, helper);
+          set the header flags as read. */
+       tny_folder_get_msg_async (TNY_FOLDER(folder), 
+                                 header, get_msg_cb, helper);
 
-       /* Free */
+       /* Frees */
        g_object_unref (G_OBJECT (folder));
 }
+
+
+/* PROTECTED method. It's useful when we want to force a given
+   selection to reload a msg. For example if we have selected a header
+   in offline mode, when Modest become online, we want to reload the
+   message automatically without an user click over the header */
+void 
+_modest_header_view_change_selection (GtkTreeSelection *selection,
+                                     gpointer user_data)
+{
+       g_return_if_fail (GTK_IS_TREE_SELECTION (selection));
+       g_return_if_fail (MODEST_IS_HEADER_VIEW (user_data));
+
+       on_selection_changed (selection, user_data);
+}