ModestHeaderViewPrivate))
typedef struct _GetMsgAsyncHelper {
- ModestHeaderView *view;
+ ModestHeaderView *self;
TnyHeader *header;
} GetMsgAsyncHelper;
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
}
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);
+}