From: Oliver Haertel Date: Thu, 6 Mar 2003 06:50:08 +0000 (+0000) Subject: fix the fix messageview toolbar delete X-Git-Tag: rel_0_8_11~34 X-Git-Url: http://git.claws-mail.org/?p=claws.git;a=commitdiff_plain;h=dd85c0d40e927c7e2c878d6b11f29d0f4c1e9d33 fix the fix messageview toolbar delete --- diff --git a/ChangeLog.claws b/ChangeLog.claws index ee6cbd24b..f2d67c712 100644 --- a/ChangeLog.claws +++ b/ChangeLog.claws @@ -1,3 +1,11 @@ +2003-03-06 [christoph] 0.8.10claws87 + + * src/folderview.c + remove changes introduced inclaws74 + * src/messageview.c + another attempt to sanely delete and update + messages deleted in separate messageview + 2003-03-05 [christoph] 0.8.10claws86 * src/summaryview.c diff --git a/configure.ac b/configure.ac index eb2f3e786..e3f8f040e 100644 --- a/configure.ac +++ b/configure.ac @@ -11,7 +11,7 @@ MINOR_VERSION=8 MICRO_VERSION=10 INTERFACE_AGE=0 BINARY_AGE=0 -EXTRA_VERSION=claws86 +EXTRA_VERSION=claws87 VERSION=$MAJOR_VERSION.$MINOR_VERSION.$MICRO_VERSION$EXTRA_VERSION dnl set $target diff --git a/src/folderview.c b/src/folderview.c index bd9cd2806..694de7e3d 100644 --- a/src/folderview.c +++ b/src/folderview.c @@ -1760,10 +1760,6 @@ static void folderview_selected(GtkCTree *ctree, GtkCTreeNode *row, summary_set_prefs_from_folderitem(folderview->summaryview, item); opened = summary_show(folderview->summaryview, item); - /* messageview could have deleted messages in this folder */ - if (prefs_common.immediate_exec) - summary_execute(folderview->summaryview); - folder_clean_cache_memory(); if (!opened) { diff --git a/src/messageview.c b/src/messageview.c index 863897425..57e02ca08 100644 --- a/src/messageview.c +++ b/src/messageview.c @@ -52,6 +52,7 @@ #include "pgptext.h" #include "menu.h" #include "stock_pixmap.h" +#include "foldersel.h" static void messageview_change_view_type(MessageView *messageview, MessageType type); @@ -642,63 +643,41 @@ void messageview_delete(MessageView *msgview) MsgInfo *msginfo = (MsgInfo*)msgview->msginfo; SummaryView *summaryview = (SummaryView*)msgview->mainwin->summaryview; FolderItem *trash = folder_get_default_trash(); + GSList *msg_list; g_return_if_fail(msginfo != NULL); - g_return_if_fail(trash != NULL); - - if (!procmsg_msg_exist(msginfo)) { + g_return_if_fail(trash != NULL); + + msg_list = folder_item_get_msg_list(msginfo->folder); + + if (msg_list == NULL) { alertpanel_error(_("Message already removed from folder.")); - messageview_update_all(msgview); - return; - } - - if (MSG_IS_MOVE(msginfo->flags)) { - alertpanel_error(_("Message already moved to Trash Folder.")); - messageview_update_all(msgview); - return; - } - - if (MSG_IS_LOCKED(msginfo->flags)) { - alertpanel_error(_("Message is locked.")); - messageview_update_all(msgview); - return; - } - - /* TODO: move summaryview's check_permission somewhere sane - * (maybe MSG_IS_NOT_AUTHOR ????) - */ - if(msginfo->folder->folder->type == F_NEWS) { - alertpanel_error(_("Deleting News not implemented.")); return; } - - /* set moved Flags - * deleting them is no option since this garbles our - * msgview->msginfo pointer - */ - procmsg_msginfo_set_to_folder(msginfo, trash); - procmsg_msginfo_unset_flags(msginfo, MSG_MARKED | MSG_DELETED, MSG_COPY); - if (!MSG_IS_MOVE(msginfo->flags)) { - procmsg_msginfo_set_flags(msginfo, 0, MSG_MOVE); + + for (; msg_list != NULL; msg_list = msg_list->next) { + MsgInfo *msginfo_list = (MsgInfo*)msg_list->data; + + if (msginfo->msgnum == msginfo_list->msgnum) { + + if (prefs_common.immediate_exec) + folder_item_move_msg(trash, msginfo); + else { + procmsg_msginfo_set_to_folder(msginfo, trash); + procmsg_msginfo_set_flags(msginfo, MSG_DELETED, 0); + /* NOTE: does not update to next message in summaryview + */ + } + + messageview_update_all(msgview); + break; + } } - - /* if messageview holds message which is also in - * currently active summaryview --> update summaryview - * if not: folderview_selected updates summaryview (summary_show) - * and deletes messages marked for deletion - */ - if (g_strcasecmp(summaryview->folder_item->path, msginfo->folder->path) == 0) { - //summary_show(summaryview, summaryview->folder_item); - //if (prefs_common.immediate_exec) - // summary_execute(summaryview); - summary_delete(summaryview); - } - messageview_update_all(msgview); } /* * scan List of MessageViews checking whether there are any Views holding messages - * which need to be updated because another view has deleted the one this MessagView holds + * which need to be updated (another view might have deleted the one this MessagView holds) */ static void messageview_update_all(MessageView *msgview) { @@ -708,19 +687,19 @@ static void messageview_update_all(MessageView *msgview) g_return_if_fail(msginfo != NULL); for (cur = msgview_list; cur != NULL; cur = cur->next) { - MessageView *msgview_list = (MessageView*)cur->data; + MessageView *msgview = (MessageView*)cur->data; MsgInfo *msginfo_list = (MsgInfo*)msgview->msginfo; + + g_return_if_fail(msginfo != NULL); - if (msginfo->msgnum == msginfo_list->msgnum && - g_strcasecmp(msginfo->folder->path, msginfo_list->folder->path) == 0) - messageview_update(msgview_list); + if (msginfo->msgnum == msginfo_list->msgnum) + messageview_update(msgview); } - } /* * \brief update messageview with currently selected message in summaryview - * + * leave unchanged if summaryview is empty * \param pointer to MessageView */ static void messageview_update(MessageView *msgview) @@ -738,13 +717,6 @@ static void messageview_update(MessageView *msgview) messageview_show(msgview, msginfo, msgview->all_headers); } - - /* - else { - toolbar_destroy(msgview->toolbar); - gtk_widget_destroy(msgview->window); - } - */ } void messageview_quote_color_set(void)