2006-08-23 [colin] 2.4.0cvs78
[claws.git] / src / messageview.c
index eb3295f6eeb48e915bc6a94997ff1761ff432371..d8fbbe6a62733730c02c496505f380dc2a17e4c1 100644 (file)
@@ -120,7 +120,7 @@ static void view_source_cb          (gpointer        data,
 static void show_all_header_cb         (gpointer        data,
                                         guint           action,
                                         GtkWidget      *widget);
-static void hide_quotes_cb             (gpointer        data,
+static void msg_hide_quotes_cb         (gpointer        data,
                                         guint           action,
                                         GtkWidget      *widget);
 
@@ -278,9 +278,9 @@ static GtkItemFactoryEntry msgview_entries[] =
        {N_("/_View/Mess_age source"),  "<control>U", view_source_cb, 0, NULL},
        {N_("/_View/Show all _headers"),"<control>H", show_all_header_cb, 0, "<ToggleItem>"},
        {N_("/_View/Quotes"),                   NULL, NULL, 0, "<Branch>"},
-       {N_("/_View/Quotes/_Hide all"),         "<control><shift>Q", hide_quotes_cb, 1, "<ToggleItem>"},
-       {N_("/_View/Quotes/Hide from level _2"),NULL, hide_quotes_cb, 2, "<ToggleItem>"},
-       {N_("/_View/Quotes/Hide from level _3"),NULL, hide_quotes_cb, 3, "<ToggleItem>"},
+       {N_("/_View/Quotes/_Fold all"),         "<control><shift>Q", msg_hide_quotes_cb, 1, "<ToggleItem>"},
+       {N_("/_View/Quotes/Fold from level _2"),NULL, msg_hide_quotes_cb, 2, "<ToggleItem>"},
+       {N_("/_View/Quotes/Fold from level _3"),NULL, msg_hide_quotes_cb, 3, "<ToggleItem>"},
 
        {N_("/_Message"),               NULL, NULL, 0, "<Branch>"},
        {N_("/_Message/Compose _new message"),
@@ -816,9 +816,15 @@ gint messageview_show(MessageView *messageview, MsgInfo *msginfo,
        
        if (messageview->msginfo != msginfo) {
                procmsg_msginfo_free(messageview->msginfo);
+               messageview->msginfo = NULL;
+               messageview_set_menu_sensitive(messageview);
                messageview->msginfo = procmsg_msginfo_get_full_info(msginfo);
                if (!messageview->msginfo)
                        messageview->msginfo = procmsg_msginfo_copy(msginfo);
+       } else {
+               messageview->msginfo = NULL;
+               messageview_set_menu_sensitive(messageview);
+               messageview->msginfo = msginfo;
        }
        headerview_show(messageview->headerview, messageview->msginfo);
 
@@ -862,11 +868,11 @@ gint messageview_show(MessageView *messageview, MsgInfo *msginfo,
 
        mimeinfo = procmime_mimeinfo_next(mimeinfo);
        if (mimeinfo && (mimeinfo->type != MIMETYPE_TEXT || 
-           strcmp(mimeinfo->subtype, "plain"))) {
-               if (strcmp(mimeinfo->subtype, "html"))
+           strcasecmp(mimeinfo->subtype, "plain"))) {
+               if (strcasecmp(mimeinfo->subtype, "html"))
                        mimeview_show_part(messageview->mimeview,mimeinfo);
                else if (prefs_common.invoke_plugin_on_html)
-                       mimeview_show_part(messageview->mimeview,mimeinfo);
+                       mimeview_select_mimepart_icon(messageview->mimeview,mimeinfo);
        }
 
        g_free(file);
@@ -1352,7 +1358,7 @@ static PrefsAccount *select_account_from_list(GList *ac_list)
                                  "Please choose which account do you want to "
                                  "use for sending the receipt notification:"),
                                _("_Send Notification"), _("+_Cancel"), NULL,
-                               optmenu) != G_ALERTDEFAULT)
+                               FALSE, optmenu) != G_ALERTDEFAULT)
                return NULL;
        return account_find_from_id(account_id);
 }
@@ -1375,6 +1381,15 @@ gchar *messageview_get_selection(MessageView *msgview)
        
        g_return_val_if_fail(msgview != NULL, NULL);
 
+       if (msgview->mimeview->type == MIMEVIEW_VIEWER) {
+               MimeViewer *viewer = msgview->mimeview->mimeviewer;
+               if (viewer && viewer->get_selection) {
+                       text = viewer->get_selection(viewer);
+                       if (text)
+                               return text;
+               }
+       }
+
        textview = messageview_get_current_textview(msgview);
        g_return_val_if_fail(textview != NULL, NULL);
 
@@ -1525,7 +1540,7 @@ static void show_all_header_cb(gpointer data, guint action, GtkWidget *widget)
        gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), active); \
 }
 
-static void hide_quotes_cb(gpointer data, guint action, GtkWidget *widget)
+static void msg_hide_quotes_cb(gpointer data, guint action, GtkWidget *widget)
 {
        MessageView *messageview = (MessageView *)data;
        MsgInfo *msginfo = messageview->msginfo;
@@ -1539,9 +1554,9 @@ static void hide_quotes_cb(gpointer data, guint action, GtkWidget *widget)
                        GTK_CHECK_MENU_ITEM(widget)->active ? action : 0;
        
        updating_menu=TRUE;
-       SET_CHECK_MENU_ACTIVE("/View/Quotes/Hide all", FALSE);
-       SET_CHECK_MENU_ACTIVE("/View/Quotes/Hide from level 2", FALSE);
-       SET_CHECK_MENU_ACTIVE("/View/Quotes/Hide from level 3", FALSE);
+       SET_CHECK_MENU_ACTIVE("/View/Quotes/Fold all", FALSE);
+       SET_CHECK_MENU_ACTIVE("/View/Quotes/Fold from level 2", FALSE);
+       SET_CHECK_MENU_ACTIVE("/View/Quotes/Fold from level 3", FALSE);
        gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(widget), prefs_common.hide_quotes > 0);      
        updating_menu=FALSE;
        if (!msginfo) return;
@@ -1549,7 +1564,10 @@ static void hide_quotes_cb(gpointer data, guint action, GtkWidget *widget)
        messageview_show(messageview, msginfo,
                         messageview->all_headers);
        procmsg_msginfo_free(msginfo);
+       
+       /* update main window */
        main_window_set_menu_sensitive(messageview->mainwin);
+       summary_redisplay_msg(messageview->mainwin->summaryview);
 }
 #undef SET_CHECK_MENU_ACTIVE
 
@@ -1654,7 +1672,7 @@ static gboolean messageview_update_msg(gpointer source, gpointer data)
 void messageview_set_menu_sensitive(MessageView *messageview)
 {
        GtkItemFactory *ifactory;
-       GtkWidget *menuitem;
+       GtkWidget *menuitem = NULL;
 
        if (!messageview || !messageview->new_window) 
                return;
@@ -1667,20 +1685,21 @@ void messageview_set_menu_sensitive(MessageView *messageview)
                gtk_check_menu_item_set_active
                        (GTK_CHECK_MENU_ITEM(menuitem),
                         messageview->mimeview->textview->show_all_headers);
-               if (prefs_common.hide_quotes) {
-                       if (prefs_common.hide_quotes == 1)
-                               menuitem = gtk_item_factory_get_widget(ifactory, 
-                                               "/View/Quotes/Hide all");
-                       if (prefs_common.hide_quotes == 2)
-                               menuitem = gtk_item_factory_get_widget(ifactory, 
-                                               "/View/Quotes/Hide from level 2");
-                       if (prefs_common.hide_quotes == 3)
-                               menuitem = gtk_item_factory_get_widget(ifactory, 
-                                               "/View/Quotes/Hide from level 3");
-                       gtk_check_menu_item_set_active
-                               (GTK_CHECK_MENU_ITEM(menuitem),
-                                TRUE);
-               }
+       }
+       if (prefs_common.hide_quotes) {
+               menuitem = NULL;
+               if (prefs_common.hide_quotes == 1)
+                       menuitem = gtk_item_factory_get_widget(ifactory, 
+                                       "/View/Quotes/Fold all");
+               if (prefs_common.hide_quotes == 2)
+                       menuitem = gtk_item_factory_get_widget(ifactory, 
+                                       "/View/Quotes/Fold from level 2");
+               if (prefs_common.hide_quotes == 3)
+                       menuitem = gtk_item_factory_get_widget(ifactory, 
+                                       "/View/Quotes/Fold from level 3");
+               gtk_check_menu_item_set_active
+                       (GTK_CHECK_MENU_ITEM(menuitem),
+                        TRUE);
        }
 }