fix bug 2794, ' account privacy signing method ignored on reply'
[claws.git] / src / compose.c
index 6ddbc78fead3b926b1660ce6f961f6cc86a47acd..33c6281362d3be46d0b17c36d6c68014b3018020 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2012 Hiroyuki Yamamoto and the Claws Mail team
+ * Copyright (C) 1999-2013 Hiroyuki Yamamoto and the Claws Mail team
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -930,11 +930,20 @@ static void compose_set_save_to(Compose *compose, const gchar *folderidentifier)
 {
        GtkEditable *entry;
        if (folderidentifier) {
+#if !GTK_CHECK_VERSION(2, 24, 0)
                combobox_unset_popdown_strings(GTK_COMBO_BOX(compose->savemsg_combo));
+#else
+               combobox_unset_popdown_strings(GTK_COMBO_BOX_TEXT(compose->savemsg_combo));
+#endif
                prefs_common.compose_save_to_history = add_history(
                                prefs_common.compose_save_to_history, folderidentifier);
+#if !GTK_CHECK_VERSION(2, 24, 0)
                combobox_set_popdown_strings(GTK_COMBO_BOX(compose->savemsg_combo),
                                prefs_common.compose_save_to_history);
+#else
+               combobox_set_popdown_strings(GTK_COMBO_BOX_TEXT(compose->savemsg_combo),
+                               prefs_common.compose_save_to_history);
+#endif
        }
 
        entry = GTK_EDITABLE(gtk_bin_get_child(GTK_BIN(compose->savemsg_combo)));
@@ -952,11 +961,20 @@ static gchar *compose_get_save_to(Compose *compose)
        result = gtk_editable_get_chars(entry, 0, -1);
        
        if (result) {
+#if !GTK_CHECK_VERSION(2, 24, 0)
                combobox_unset_popdown_strings(GTK_COMBO_BOX(compose->savemsg_combo));
+#else
+               combobox_unset_popdown_strings(GTK_COMBO_BOX_TEXT(compose->savemsg_combo));
+#endif
                prefs_common.compose_save_to_history = add_history(
                                prefs_common.compose_save_to_history, result);
+#if !GTK_CHECK_VERSION(2, 24, 0)
                combobox_set_popdown_strings(GTK_COMBO_BOX(compose->savemsg_combo),
                                prefs_common.compose_save_to_history);
+#else
+               combobox_set_popdown_strings(GTK_COMBO_BOX_TEXT(compose->savemsg_combo),
+                               prefs_common.compose_save_to_history);
+#endif
        }
        return result;
 }
@@ -984,8 +1002,15 @@ Compose *compose_generic_new(PrefsAccount *account, const gchar *mailto, FolderI
                /* mailto defines a from, check if we can get account prefs from it,
                   if not, the account prefs will be guessed using other ways, but we'll keep
                   the from anyway */
-               if (mailto_from)
+               if (mailto_from) {
                        mailto_account = account_find_from_address(mailto_from, TRUE);
+                       if (mailto_account == NULL) {
+                               gchar *tmp_from;
+                               Xstrdup_a(tmp_from, mailto_from, return NULL);
+                               extract_address(tmp_from);
+                               mailto_account = account_find_from_address(tmp_from, TRUE);
+                       }
+               }
                if (mailto_account)
                        account = mailto_account;
        }
@@ -1260,12 +1285,11 @@ static void compose_force_encryption(Compose *compose, PrefsAccount *account,
        if (override_pref == FALSE && account->default_encrypt_reply == FALSE)
                return;
 
-       if (system)
-               privacy = system;
-       else if (account->default_privacy_system
-       &&  strlen(account->default_privacy_system)) {
+       if (account->default_privacy_system && strlen(account->default_privacy_system))
                privacy = account->default_privacy_system;
-       } else {
+       else if (system)
+               privacy = system;
+       else {
                GSList *privacy_avail = privacy_get_system_ids();
                if (privacy_avail && g_slist_length(privacy_avail)) {
                        privacy = (gchar *)(privacy_avail->data);
@@ -1291,12 +1315,11 @@ static void compose_force_signing(Compose *compose, PrefsAccount *account, const
 {
        const gchar *privacy = NULL;
 
-       if (system)
-               privacy = system;
-       else if (account->default_privacy_system
-       &&  strlen(account->default_privacy_system)) {
+       if (account->default_privacy_system && strlen(account->default_privacy_system))
                privacy = account->default_privacy_system;
-       } else {
+       else if (system)
+               privacy = system;
+       else {
                GSList *privacy_avail = privacy_get_system_ids();
                if (privacy_avail && g_slist_length(privacy_avail)) {
                        privacy = (gchar *)(privacy_avail->data);
@@ -6702,7 +6725,7 @@ static void compose_create_header_entry(Compose *compose)
        GtkCellRenderer *cell = gtk_cell_renderer_text_new();
        gtk_cell_renderer_set_alignment(cell, 0.0, 0.5);
        gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(combo), cell, TRUE);
-       gtk_combo_box_set_entry_text_column(combo, 0);
+       gtk_combo_box_set_entry_text_column(GTK_COMBO_BOX(combo), 0);
 #endif
        gtk_combo_box_set_active(GTK_COMBO_BOX(combo), 0);
        g_signal_connect(G_OBJECT(gtk_bin_get_child(GTK_BIN(combo))), "grab_focus",
@@ -7000,15 +7023,8 @@ static GtkWidget *compose_create_attach(Compose *compose)
                         G_CALLBACK(attach_selected), compose);
        g_signal_connect(G_OBJECT(attach_clist), "button_press_event",
                         G_CALLBACK(attach_button_pressed), compose);
-#ifndef MAEMO
        g_signal_connect(G_OBJECT(attach_clist), "popup-menu",
                         G_CALLBACK(popup_attach_button_pressed), compose);
-#else
-       gtk_widget_tap_and_hold_setup(GTK_WIDGET(attach_clist), NULL, NULL,
-                       GTK_TAP_AND_HOLD_NONE | GTK_TAP_AND_HOLD_NO_INTERNALS);
-       g_signal_connect(G_OBJECT(attach_clist), "tap-and-hold",
-                        G_CALLBACK(popup_attach_button_pressed), compose);
-#endif
        g_signal_connect(G_OBJECT(attach_clist), "key_press_event",
                         G_CALLBACK(attach_key_pressed), compose);
 
@@ -7070,9 +7086,13 @@ static GtkWidget *compose_create_others(Compose *compose)
        gtk_widget_show(savemsg_combo);
 
        if (prefs_common.compose_save_to_history)
+#if !GTK_CHECK_VERSION(2, 24, 0)
                combobox_set_popdown_strings(GTK_COMBO_BOX(savemsg_combo),
                                prefs_common.compose_save_to_history);
-
+#else
+               combobox_set_popdown_strings(GTK_COMBO_BOX_TEXT(savemsg_combo),
+                               prefs_common.compose_save_to_history);
+#endif
        gtk_table_attach(GTK_TABLE(table), savemsg_combo, 1, 2, rowcount, rowcount + 1, GTK_FILL|GTK_EXPAND, GTK_SHRINK, 0, 0);
        gtk_widget_set_sensitive(GTK_WIDGET(savemsg_combo), prefs_common.savemsg);
        g_signal_connect_after(G_OBJECT(savemsg_combo), "grab_focus",
@@ -7353,11 +7373,7 @@ static Compose *compose_create(PrefsAccount *account,
        gtk_action_group_add_radio_actions(action_group, compose_radio_enc_entries,
                        G_N_ELEMENTS(compose_radio_enc_entries), C_AUTO, G_CALLBACK(compose_set_encoding_cb), (gpointer)compose);
 
-#ifndef MAEMO
        MENUITEM_ADDUI_MANAGER(compose->ui_manager, "/", "Menu", NULL, GTK_UI_MANAGER_MENUBAR)
-#else
-       MENUITEM_ADDUI_MANAGER(compose->ui_manager, "/", "Menu", NULL, GTK_UI_MANAGER_POPUP)
-#endif
 
        MENUITEM_ADDUI_MANAGER(compose->ui_manager, "/Menu", "Message", "Message", GTK_UI_MANAGER_MENU)
        MENUITEM_ADDUI_MANAGER(compose->ui_manager, "/Menu", "Edit", "Edit", GTK_UI_MANAGER_MENU)
@@ -7538,11 +7554,7 @@ static Compose *compose_create(PrefsAccount *account,
        gtk_widget_show_all(menubar);
 
        gtk_window_add_accel_group(GTK_WINDOW(window), gtk_ui_manager_get_accel_group(compose->ui_manager));
-#ifndef MAEMO
        gtk_box_pack_start(GTK_BOX(vbox), menubar, FALSE, TRUE, 0);
-#else
-       hildon_window_set_menu(HILDON_WINDOW(window), GTK_MENU(menubar));
-#endif
 
        if (prefs_common.toolbar_detachable) {
                handlebox = gtk_handle_box_new();
@@ -7552,13 +7564,8 @@ static Compose *compose_create(PrefsAccount *account,
        gtk_box_pack_start(GTK_BOX(vbox), handlebox, FALSE, FALSE, 0);
 
        gtk_widget_realize(handlebox);
-#ifdef MAEMO
-       compose->toolbar = toolbar_create(TOOLBAR_COMPOSE, window,
-                                         (gpointer)compose);
-#else
        compose->toolbar = toolbar_create(TOOLBAR_COMPOSE, handlebox,
                                          (gpointer)compose);
-#endif
 
        vbox2 = gtk_vbox_new(FALSE, 2);
        gtk_box_pack_start(GTK_BOX(vbox), vbox2, TRUE, TRUE, 0);
@@ -7669,15 +7676,8 @@ static Compose *compose_create(PrefsAccount *account,
                         G_CALLBACK(text_inserted), compose);
        g_signal_connect(G_OBJECT(text), "button_press_event",
                         G_CALLBACK(text_clicked), compose);
-#ifndef MAEMO
        g_signal_connect(G_OBJECT(text), "popup-menu",
                         G_CALLBACK(compose_popup_menu), compose);
-#else
-       gtk_widget_tap_and_hold_setup(GTK_WIDGET(text), NULL, NULL,
-                       GTK_TAP_AND_HOLD_NONE | GTK_TAP_AND_HOLD_NO_INTERNALS);
-       g_signal_connect(G_OBJECT(text), "tap-and-hold",
-                        G_CALLBACK(compose_popup_menu), compose);
-#endif
        g_signal_connect(G_OBJECT(subject_entry), "changed",
                        G_CALLBACK(compose_changed_cb), compose);
        g_signal_connect(G_OBJECT(subject_entry), "activate",
@@ -7701,12 +7701,6 @@ static Compose *compose_create(PrefsAccount *account,
        /* pane between attach clist and text */
        paned = gtk_vpaned_new();
        gtk_container_add(GTK_CONTAINER(vbox2), paned);
-#ifdef MAEMO
-       if( maemo_mainwindow_is_fullscreen(mainwindow_get_mainwindow()->window) )
-               gtk_widget_set_size_request(edit_vbox, -1, mode == COMPOSE_NEW ? 300 : 280);
-       else
-               gtk_widget_set_size_request(edit_vbox, -1, mode == COMPOSE_NEW ? 250 : 230);
-#endif
        gtk_paned_add1(GTK_PANED(paned), notebook);
        gtk_paned_add2(GTK_PANED(paned), edit_vbox);
        gtk_widget_show_all(paned);
@@ -7903,10 +7897,6 @@ static Compose *compose_create(PrefsAccount *account,
                gtk_widget_realize(window);
        } else {
                gtk_widget_show(window);
-#ifdef MAEMO
-               maemo_window_full_screen_if_needed(GTK_WINDOW(window));
-               maemo_connect_key_press_to_mainwindow(GTK_WINDOW(window));
-#endif
        }
        
        return compose;