* src/messageview.c
authorAlfons Hoogervorst <alfons@proteus.demon.nl>
Sun, 21 Mar 2004 00:51:46 +0000 (00:51 +0000)
committerAlfons Hoogervorst <alfons@proteus.demon.nl>
Sun, 21 Mar 2004 00:51:46 +0000 (00:51 +0000)
* src/toolbar.c
don't `navigate-delete` when a summary view's selection does not
match the accompanying message view's message

ChangeLog.claws
configure.ac
src/messageview.c
src/toolbar.c

index 40d62c59cf2ddbc0303c9deec80c7c30cc1679b7..30f2494deee8a6ce0463aef6b61dcc67d25cb396 100644 (file)
@@ -1,3 +1,10 @@
+2004-03-21 [alfons]    0.9.10claws24
+
+       * src/messageview.c
+         src/toolbar.c
+               don't `navigate-delete` when a summary view's selection does not 
+               match the accompanying message view's message
+
 2004-03-20 [alfons]    0.9.10claws23
 
        * src/summaryview.c
index 4495f4c3764747cac132a779b08ca7572f8b5166..23b361191f1185b2a41cdab1aff4236ae281532b 100644 (file)
@@ -11,7 +11,7 @@ MINOR_VERSION=9
 MICRO_VERSION=10
 INTERFACE_AGE=0
 BINARY_AGE=0
-EXTRA_VERSION=23
+EXTRA_VERSION=24
 if test $EXTRA_VERSION -eq 0; then
     VERSION=${MAJOR_VERSION}.${MINOR_VERSION}.${MICRO_VERSION}claws
 else
index bf124c555bf5e8b8633e33e4267b606259f8e2bf..8a32628b2dd9e9a25aeac776381a575307463f11 100644 (file)
@@ -780,39 +780,47 @@ void messageview_destroy(MessageView *messageview)
 
 void messageview_delete(MessageView *msgview)
 {
-#if 1
-       g_warning("Use summary_delete()\n");
-#else
-       MsgInfo *msginfo = (MsgInfo *) msgview->msginfo;
-       FolderItem *trash = NULL;
-       PrefsAccount *ac = NULL;
+       MsgInfo *msginfo = NULL;
 
-       g_return_if_fail(msginfo != NULL);
-
-       /* to get the trash folder, we have to choose either
-        * the folder's or account's trash default - we prefer
-        * the one in the account prefs */
-       if (msginfo->folder) {
-               if (NULL != (ac = account_find_from_item(msginfo->folder)))
-                       trash = account_get_special_folder(ac, F_TRASH);
-               if (!trash && msginfo->folder->folder)  
-                       trash = msginfo->folder->folder->trash;
-               /* if still not found, use the default */
-               if (!trash) 
-                       trash = folder_get_default_trash();
-       }       
-
-       g_return_if_fail(trash   != NULL);
-
-       if (prefs_common.immediate_exec)
-               /* TODO: Delete from trash */
-               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 */
-       }
-#endif 
+       if (msgview->msginfo && msgview->mainwin && msgview->mainwin->summaryview)
+               msginfo = summary_get_selected_msg(msgview->mainwin->summaryview);
+       
+       /* need a procmsg_msginfo_equal() */
+       if (msginfo && msgview->msginfo && 
+           msginfo->msgnum == msgview->msginfo->msgnum && 
+           msginfo->folder == msgview->msginfo->folder) {
+               summary_delete(msgview->mainwin->summaryview);
+       } else {                
+               MsgInfo *msginfo = (MsgInfo *) msgview->msginfo;
+               FolderItem *trash = NULL;
+               PrefsAccount *ac = NULL;
+
+               g_return_if_fail(msginfo != NULL);
+
+               /* to get the trash folder, we have to choose either
+                * the folder's or account's trash default - we prefer
+                * the one in the account prefs */
+               if (msginfo->folder) {
+                       if (NULL != (ac = account_find_from_item(msginfo->folder)))
+                               trash = account_get_special_folder(ac, F_TRASH);
+                       if (!trash && msginfo->folder->folder)  
+                               trash = msginfo->folder->folder->trash;
+                       /* if still not found, use the default */
+                       if (!trash) 
+                               trash = folder_get_default_trash();
+               }       
+
+               g_return_if_fail(trash   != NULL);
+
+               if (prefs_common.immediate_exec)
+                       /* TODO: Delete from trash */
+                       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 */
+               }
+       }               
 }
 
 /* 
index 3029a5efc70601dd8c2f36c12a5a080c95676bed..a795e87ad3695e30d3df8f50fa1610c6306d9572 100644 (file)
@@ -890,17 +890,13 @@ static void toolbar_delete_cb(GtkWidget *widget, gpointer data)
 {
        ToolbarItem *toolbar_item = (ToolbarItem*)data;
        MainWindow *mainwin;
-       MessageView *msgview;
 
        g_return_if_fail(toolbar_item != NULL);
        
        switch (toolbar_item->type) {
        case TOOLBAR_MSGVIEW:
-               if (msgview = (MessageView*)toolbar_item->parent) {
-                       mainwin = msgview->mainwin;
-                       if (msgview->msginfo && mainwin)
-                               summary_delete(mainwin->summaryview);
-               }                               
+               if (toolbar_item->parent)
+                       messageview_delete((MessageView *)toolbar_item->parent);
                break;
         case TOOLBAR_MAIN:
                mainwin = (MainWindow*)toolbar_item->parent;