fix the fix messageview toolbar delete
authorOliver Haertel <o.h.a@gmx.net>
Thu, 6 Mar 2003 06:50:08 +0000 (06:50 +0000)
committerOliver Haertel <o.h.a@gmx.net>
Thu, 6 Mar 2003 06:50:08 +0000 (06:50 +0000)
ChangeLog.claws
configure.ac
src/folderview.c
src/messageview.c

index ee6cbd24b1e54a55894783d2fd3046212a6d6046..f2d67c7121d31c7cfd0468c3da935830582e83a7 100644 (file)
@@ -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
index eb2f3e786ad8c6d0b6e267eddbf861e1532f8fba..e3f8f040e8bd1366de50fa5c0b9f1f839ead8c78 100644 (file)
@@ -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
index bd9cd280658eebf189a9a7cf511ee66299e951ce..694de7e3dc6872d30eb0e447a79877499670bff0 100644 (file)
@@ -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) {
index 863897425f3948a5f3904b790aa34ca886e97303..57e02ca0825bd3c2f87b1dd68dec05ded1dfa87e 100644 (file)
@@ -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)