0.8.6claws51
[claws.git] / src / toolbar.c
index 678c3d5d0fc3e1266f2346a859e078164a01dba4..6641592471512da65fba2155d752d51cac4af1be 100644 (file)
@@ -49,9 +49,9 @@
 #include "prefs_actions.h"
 #include "manage_window.h"
 #include "gtkutils.h"
-
 #include "toolbar.h"
 #include "prefs_toolbar.h"
+#include "alertpanel.h"
 
 /* elements */
 #define TOOLBAR_TAG_INDEX        "toolbar"
@@ -74,8 +74,6 @@ static void   toolbar_set_default_main       (void);
 static void   toolbar_set_default_compose    (void);
 static void   toolbar_set_default_msgview    (void);
 
-static ToolbarType detect_window(gpointer data);
-
 struct ToolbarText 
 {
        gchar *index_str;
@@ -349,8 +347,8 @@ static void toolbar_set_default_msgview(void)
                gint icon;
                gchar *text;
        } default_toolbar[] = {
-               { A_COMPOSE_EMAIL, STOCK_PIXMAP_MAIL_COMPOSE,         _("Email")   },
-               { A_SEPARATOR,     0,                                 ("")         },
+               /*{ A_COMPOSE_EMAIL, STOCK_PIXMAP_MAIL_COMPOSE,         _("Email")   },
+                 { A_SEPARATOR,     0,                                 ("")         },*/
                { A_REPLY_MESSAGE, STOCK_PIXMAP_MAIL_REPLY,           _("Reply")   }, 
                { A_REPLY_ALL,     STOCK_PIXMAP_MAIL_REPLY_TO_ALL,    _("All")     },
                { A_REPLY_SENDER,  STOCK_PIXMAP_MAIL_REPLY_TO_AUTHOR, _("Sender")  },
@@ -593,13 +591,6 @@ void toolbar_action_execute(GtkWidget    *widget,
                g_warning ("Error: did not find Sylpheed Action to execute");
 }
 
-static ToolbarType detect_window(gpointer data) 
-{
-       g_return_val_if_fail(data != NULL, -1);
-       
-       return ((ToolbarParent*)data)->type;
-}
-
 /*
  * Change the style of toolbar
  */
@@ -673,10 +664,36 @@ void common_toolbar_delete_cb(GtkWidget     *widget,
        switch (parent->type) {
        case TOOLBAR_MSGVIEW:
                msgview = (MessageView*)parent->data;
-               folder_item_remove_msg(msgview->msginfo->folder,
-                                      msgview->msginfo->msgnum); 
-/** TODO: The summaryview must be updated.... **/
-               gtk_widget_destroy(msgview->window);
+               
+               /* make sure the selected msg in summaryview is 
+                  the one we are asked to delete
+               */
+               if (msgview->mainwin->summaryview->selected) {
+                       SummaryView *summaryview = msgview->mainwin->summaryview;
+                       GtkCTree *ctree = GTK_CTREE(summaryview->ctree);
+                       MsgInfo *msginfo = gtk_ctree_node_get_row_data(ctree, 
+                                                                      summaryview->selected);  
+                       if (msginfo->msgnum != msgview->msginfo->msgnum) {
+                               alertpanel_error(_("Message already removed from folder."));
+                               return;
+                       }
+               }
+               
+               summary_delete(msgview->mainwin->summaryview);  
+
+               if (msgview->mainwin->summaryview->selected) {
+                       SummaryView *summaryview = msgview->mainwin->summaryview;
+                       GtkCTree *ctree = GTK_CTREE(summaryview->ctree);
+                       MsgInfo *msginfo = gtk_ctree_node_get_row_data(ctree, 
+                                                                      summaryview->selected);
+                       messageview_show(msgview, msginfo, 
+                                        msgview->all_headers);
+               } else {
+                       toolbar_clear_list(TOOLBAR_MSGVIEW);
+                       TOOLBAR_DESTROY_ITEMS(msgview->toolbar->item_list);     
+                       TOOLBAR_DESTROY_ACTIONS(msgview->toolbar->action_list);
+                       gtk_widget_destroy(msgview->window);
+               }
                break;
         case TOOLBAR_MAIN:
                mainwin = (MainWindow*)parent->data;
@@ -819,7 +836,6 @@ void common_toolbar_forward_cb(GtkWidget    *widget,
                               gpointer          data)
 {
        ToolbarParent *parent = (ToolbarParent*)data;
-       MessageView *msgview;
 
        g_return_if_fail(parent != NULL);