static void messageview_update (MessageView *msgview,
MsgInfo *old_msginfo);
static gboolean messageview_update_msg (gpointer source, gpointer data);
+static gboolean messageview_msg_moved (gpointer source, gpointer data);
static void messageview_nothing_cb (GtkAction *action, gpointer data)
{
{"View/Goto/NextUnreadFolder", NULL, N_("Next unread _folder"), "<shift>G", NULL, G_CALLBACK(goto_unread_folder_cb) },
{"View/Goto/OtherFolder", NULL, N_("_Other folder..."), "G", NULL, G_CALLBACK(goto_folder_cb) },
/* {"View/Goto/---", NULL, "---", NULL, NULL, NULL }, */
- {"View/Scroll", NULL, N_("Message Scroll") },
+ {"View/Scroll", NULL, N_("Message scroll") },
{"View/Scroll/PrevLine", NULL, N_("Previous line"), NULL, NULL, G_CALLBACK(scroll_prev_line_cb) },
{"View/Scroll/NextLine", NULL, N_("Next line"), NULL, NULL, G_CALLBACK(scroll_next_line_cb) },
{"View/Scroll/PrevPage", NULL, N_("Previous page"), NULL, NULL, G_CALLBACK(scroll_prev_page_cb) },
messageview->msginfo_update_callback_id =
hooks_register_hook(MSGINFO_UPDATE_HOOKLIST, messageview_update_msg, (gpointer) messageview);
+ messageview->msginfo_moved_callback_id = 0;
return messageview;
}
hildon_window_set_menu(HILDON_WINDOW(window), GTK_MENU(menubar));
#endif
+ cm_toggle_menu_set_active_full(msgview->ui_manager, "Menu/View/AllHeaders",
+ prefs_common.show_all_headers);
+
if (prefs_common.toolbar_detachable) {
handlebox = gtk_handle_box_new();
} else {
g_signal_connect(G_OBJECT(window), "key_press_event",
G_CALLBACK(key_pressed), msgview);
#endif
+ msgview->msginfo_moved_callback_id = hooks_register_hook(MSGINFO_UPDATE_HOOKLIST,
+ messageview_msg_moved, (gpointer) msgview);
messageview_add_toolbar(msgview, window);
if (show) {
messageview_set_position(messageview, 0);
- textview_set_all_headers(messageview->mimeview->textview,
- messageview->all_headers);
-
#ifdef MAEMO
maemo_window_full_screen_if_needed(GTK_WINDOW(messageview->window));
#endif
if (!messageview->deferred_destroy) {
hooks_unregister_hook(MSGINFO_UPDATE_HOOKLIST,
messageview->msginfo_update_callback_id);
+ if (messageview->new_window)
+ hooks_unregister_hook(MSGINFO_UPDATE_HOOKLIST,
+ messageview->msginfo_moved_callback_id);
}
if (messageview->updating) {
if (messageview->updating)
return;
- messageview->all_headers =
+ messageview->all_headers = prefs_common.show_all_headers =
gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action));
if (!msginfo) return;
messageview->msginfo = NULL;
- messageview_show(messageview, msginfo,gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action)));
+ messageview_show(messageview, msginfo, messageview->all_headers);
procmsg_msginfo_free(msginfo);
main_window_set_menu_sensitive(messageview->mainwin);
+ summary_redisplay_msg(messageview->mainwin->summaryview);
}
static void msg_hide_quotes_cb(GtkToggleAction *action, gpointer data)
if (messageview->msginfo != msginfo_update->msginfo)
return FALSE;
- if (msginfo_update->flags & MSGINFO_UPDATE_DELETED) {
+ if ((msginfo_update->flags & MSGINFO_UPDATE_DELETED) &&
+ !messageview->new_window)
+ {
MsgInfo *old_msginfo = messageview->msginfo;
messageview_clear(messageview);
messageview_update(messageview, old_msginfo);
return FALSE;
}
+static gboolean messageview_msg_moved(gpointer source, gpointer data)
+{
+ MsgInfoUpdate *msginfo_update = (MsgInfoUpdate *) source;
+ MessageView *messageview = (MessageView *) data;
+ MsgInfo *msg_old = messageview->msginfo;
+ MsgInfo *msg_new = msginfo_update->msginfo;
+
+ if (strcmp2(msg_new->msgid, msg_old->msgid))
+ return FALSE;
+
+ if ((msginfo_update->flags & MSGINFO_UPDATE_ADDED) &&
+ (folder_item_get_msginfo(msg_old->folder, msg_old->msgnum) == NULL))
+ {
+ if (folder_has_parent_of_type(msg_new->folder, F_TRASH))
+ messageview_destroy(messageview);
+ else
+ messageview_show(messageview, msg_new,
+ messageview->all_headers);
+ }
+
+ return FALSE;
+}
+
void messageview_set_menu_sensitive(MessageView *messageview)
{
if (!messageview || !messageview->new_window)