=== modified file 'debian/changelog' --- debian/changelog 2010-10-02 12:25:11 +0000 +++ debian/changelog 2010-10-14 14:48:14 +0000 @@ -1,3 +1,14 @@ +evolution (2.30.3-1ubuntu7) maverick-proposed; urgency=low + + * debian/patches/92_git_fix_proxy_ignore_hosts.patch: + - backport from upstream, change the migration to 2.30 for people + using /apps/evolution/shell/network_config/ignore_hosts (LP: #659153) + * debian/patches/92_git_only_hide_signature_on_express.patch: + - show signature if you have one account and aren't in express mode + (LP: #649609) + + -- Didier Roche Thu, 14 Oct 2010 16:04:59 +0200 + evolution (2.30.3-1ubuntu6) maverick; urgency=low * debian/patches/91_add_u1_email_translations.patch: === added file 'debian/patches/92_git_fix_proxy_ignore_hosts.patch' --- debian/patches/92_git_fix_proxy_ignore_hosts.patch 1970-01-01 00:00:00 +0000 +++ debian/patches/92_git_fix_proxy_ignore_hosts.patch 2010-10-14 14:04:06 +0000 @@ -0,0 +1,192 @@ +From aa61df95271d9daa2eceb443de8e741c004528ea Mon Sep 17 00:00:00 2001 +From: Milan Crha +Date: Fri, 03 Sep 2010 10:04:03 +0000 +Subject: Bug #580623 - Mishandling of evolution's proxy ignore_hosts key + +diff -Nur -x '*.orig' -x '*~' evolution-2.30.3//mail/e-mail-migrate.c evolution-2.30.3.new//mail/e-mail-migrate.c +--- evolution-2.30.3//mail/e-mail-migrate.c 2010-10-14 15:55:46.130419954 +0200 ++++ evolution-2.30.3.new//mail/e-mail-migrate.c 2010-10-14 15:55:57.710419954 +0200 +@@ -3009,6 +3009,63 @@ + + #endif + ++static void ++em_ensure_proxy_ignore_hosts_being_list (void) ++{ ++ const gchar *key = "/apps/evolution/shell/network_config/ignore_hosts"; ++ GConfClient *client; ++ GConfValue *key_value; ++ ++ /* makes sure the 'key' is a list of strings, not a string, as set by previous versions */ ++ ++ client = gconf_client_get_default (); ++ key_value = gconf_client_get (client, key, NULL); ++ if (key_value && key_value->type == GCONF_VALUE_STRING) { ++ gchar *value = gconf_client_get_string (client, key, NULL); ++ GSList *lst = NULL; ++ GError *error = NULL; ++ ++ if (value && *value) { ++ gchar **split = g_strsplit (value, ",", -1); ++ ++ if (split) { ++ gint ii; ++ ++ for (ii = 0; split[ii]; ii++) { ++ const gchar *tmp = split[ii]; ++ ++ if (tmp && *tmp) { ++ gchar *val = g_strstrip (g_strdup (tmp)); ++ ++ if (val && *val) ++ lst = g_slist_append (lst, val); ++ else ++ g_free (val); ++ } ++ } ++ } ++ ++ g_strfreev (split); ++ } ++ ++ gconf_client_unset (client, key, NULL); ++ gconf_client_set_list (client, key, GCONF_VALUE_STRING, lst, &error); ++ ++ g_slist_foreach (lst, (GFunc) g_free, NULL); ++ g_slist_free (lst); ++ g_free (value); ++ ++ if (error) { ++ fprintf (stderr, "%s: Failed to set a list values with error: %s\n", G_STRFUNC, error->message); ++ g_error_free (error); ++ } ++ } ++ ++ if (key_value) ++ gconf_value_free (key_value); ++ g_object_unref (client); ++} ++ + gboolean + e_mail_migrate (EShellBackend *shell_backend, + gint major, +@@ -3121,5 +3178,9 @@ + #endif + } + ++ if (major < 2 || (major == 2 && minor < 30)) { ++ em_ensure_proxy_ignore_hosts_being_list (); ++ } ++ + return TRUE; + } +diff -Nur -x '*.orig' -x '*~' evolution-2.30.3//modules/mail/em-network-prefs.c evolution-2.30.3.new//modules/mail/em-network-prefs.c +--- evolution-2.30.3//modules/mail/em-network-prefs.c 2010-06-20 14:14:48.000000000 +0200 ++++ evolution-2.30.3.new//modules/mail/em-network-prefs.c 2010-10-14 15:57:01.794419954 +0200 +@@ -265,6 +265,53 @@ + + } + ++static void ++ignore_hosts_entry_changed_cb (GtkWidget *widget, const gchar *key) ++{ ++ const gchar *value; ++ GSList *lst = NULL; ++ GConfClient *gconf; ++ ++ g_return_if_fail (widget != NULL); ++ g_return_if_fail (key != NULL); ++ g_return_if_fail (GTK_IS_ENTRY (widget)); ++ ++ /* transform comma-separated list of ignore_hosts to a string-list */ ++ value = gtk_entry_get_text (GTK_ENTRY (widget)); ++ if (value && *value) { ++ gchar **split = g_strsplit (value, ",", -1); ++ ++ if (split) { ++ gint ii; ++ ++ for (ii = 0; split[ii]; ii++) { ++ const gchar *tmp = split[ii]; ++ ++ if (tmp && *tmp) { ++ gchar *val = g_strstrip (g_strdup (tmp)); ++ ++ if (val && *val) ++ lst = g_slist_append (lst, val); ++ else ++ g_free (val); ++ } ++ } ++ } ++ ++ g_strfreev (split); ++ } ++ ++ gconf = mail_config_get_gconf_client (); ++ if (!gconf_client_set_list (gconf, key, GCONF_VALUE_STRING, lst, NULL)) { ++ /* for cases where migration didn't happen, get rid of the old GConf key and "re-type" it */ ++ gconf_client_unset (gconf, key, NULL); ++ gconf_client_set_list (gconf, key, GCONF_VALUE_STRING, lst, NULL); ++ } ++ ++ g_slist_foreach (lst, (GFunc) g_free, NULL); ++ g_slist_free (lst); ++} ++ + /* plugin meta-data */ + static EMConfigItem emnp_items[] = { + { E_CONFIG_BOOK, (gchar *) "", (gchar *) "network_preferences_toplevel", emnp_widget_glade }, +@@ -295,7 +342,7 @@ + em_network_prefs_construct (EMNetworkPrefs *prefs) + { + GtkWidget *toplevel; +- GSList* l; ++ GSList *l, *ignore; + gchar *buf; + EMConfig *ec; + EMConfigTargetPrefs *target; +@@ -401,7 +448,7 @@ + G_CALLBACK(widget_entry_changed_cb), + (gpointer) GCONF_E_HTTPS_HOST_KEY); + g_signal_connect (prefs->ignore_hosts, "changed", +- G_CALLBACK(widget_entry_changed_cb), ++ G_CALLBACK(ignore_hosts_entry_changed_cb), + (gpointer) GCONF_E_IGNORE_HOSTS_KEY); + g_signal_connect (prefs->http_port, "value_changed", + G_CALLBACK(widget_entry_changed_cb), +@@ -436,7 +483,33 @@ + gtk_entry_set_text (prefs->https_host, buf ? buf : ""); + g_free (buf); + +- buf = gconf_client_get_string (prefs->gconf, GCONF_E_IGNORE_HOSTS_KEY, NULL); ++ buf = NULL; ++ ignore = gconf_client_get_list (prefs->gconf, GCONF_E_IGNORE_HOSTS_KEY, GCONF_VALUE_STRING, NULL); ++ if (ignore) { ++ /* reconstruct comma-separated list */ ++ GSList *sl; ++ GString *str = NULL; ++ ++ for (sl = ignore; sl; sl = sl->next) { ++ const gchar *value = sl->data; ++ ++ if (value && *value) { ++ if (!str) { ++ str = g_string_new (value); ++ } else { ++ g_string_append (str, ","); ++ g_string_append (str, value); ++ } ++ } ++ } ++ ++ g_slist_foreach (ignore, (GFunc) g_free, NULL); ++ g_slist_free (ignore); ++ ++ if (str) ++ buf = g_string_free (str, FALSE); ++ } ++ + gtk_entry_set_text (prefs->ignore_hosts, buf ? buf : ""); + g_free (buf); + === added file 'debian/patches/92_git_only_hide_signature_on_express.patch' --- debian/patches/92_git_only_hide_signature_on_express.patch 1970-01-01 00:00:00 +0000 +++ debian/patches/92_git_only_hide_signature_on_express.patch 2010-10-14 14:04:06 +0000 @@ -0,0 +1,253 @@ +From 402166be5496cfaf5ac5908702d74f02fce4c1e7 Mon Sep 17 00:00:00 2001 +From: Matthew Barnes +Date: Sun, 20 Jun 2010 21:34:27 +0000 +Subject: Composer: Only hide single From account in express mode. + +At least until we have another way to insert signatures. + +Obvious solution: Insert -> Signature -> (list of your signatures) +--- +diff --git a/composer/e-composer-header-table.c b/composer/e-composer-header-table.c +index 7a5d485..4e1d523 100644 +--- a/composer/e-composer-header-table.c ++++ b/composer/e-composer-header-table.c +@@ -21,9 +21,10 @@ + #include + #include + +-#include "e-util/e-binding.h" +-#include "e-util/gconf-bridge.h" +-#include "widgets/misc/e-signature-combo-box.h" ++#include ++#include ++#include ++#include + + #include "e-msg-composer.h" + #include "e-composer-private.h" +@@ -56,6 +57,7 @@ enum { + PROP_DESTINATIONS_TO, + PROP_POST_TO, + PROP_REPLY_TO, ++ PROP_SHELL, + PROP_SIGNATURE, + PROP_SIGNATURE_LIST, + PROP_SUBJECT +@@ -67,6 +69,7 @@ struct _EComposerHeaderTablePrivate { + GtkWidget *signature_label; + GtkWidget *signature_combo_box; + ENameSelector *name_selector; ++ EShell *shell; + }; + + static gpointer parent_class; +@@ -275,25 +278,25 @@ skip_custom: + return new_destinations; + } + +-static gint +-count_from_accounts (EComposerHeaderTable *table) ++static gboolean ++from_header_should_be_visible (EComposerHeaderTable *table) + { ++ EShell *shell; + EComposerHeader *header; ++ EComposerHeaderType type; + EAccountComboBox *combo_box; + +- header = e_composer_header_table_get_header (table, E_COMPOSER_HEADER_FROM); +- combo_box = E_ACCOUNT_COMBO_BOX (header->input_widget); ++ shell = e_composer_header_table_get_shell (table); + +- return e_account_combo_box_count_displayed_accounts (combo_box); +-} ++ /* Always display From in standard mode. */ ++ if (!e_shell_get_express_mode (shell)) ++ return TRUE; + +-static gboolean +-from_header_should_be_visible (EComposerHeaderTable *table) +-{ +- gint num_accounts; ++ type = E_COMPOSER_HEADER_FROM; ++ header = e_composer_header_table_get_header (table, type); ++ combo_box = E_ACCOUNT_COMBO_BOX (header->input_widget); + +- num_accounts = count_from_accounts (table); +- return (num_accounts > 1); ++ return (e_account_combo_box_count_displayed_accounts (combo_box) > 1); + } + + static void +@@ -501,6 +504,16 @@ composer_header_table_from_changed_cb (EComposerHeaderTable *table) + composer_header_table_setup_mail_headers (table); + } + ++static void ++composer_header_table_set_shell (EComposerHeaderTable *table, ++ EShell *shell) ++{ ++ g_return_if_fail (E_IS_SHELL (shell)); ++ g_return_if_fail (table->priv->shell == NULL); ++ ++ table->priv->shell = g_object_ref (shell); ++} ++ + static gint + get_row_padding (void) + { +@@ -657,6 +670,12 @@ composer_header_table_set_property (GObject *object, + g_value_get_string (value)); + return; + ++ case PROP_SHELL: ++ composer_header_table_set_shell ( ++ E_COMPOSER_HEADER_TABLE (object), ++ g_value_get_object (value)); ++ return; ++ + case PROP_SIGNATURE: + e_composer_header_table_set_signature ( + E_COMPOSER_HEADER_TABLE (object), +@@ -749,6 +768,13 @@ composer_header_table_get_property (GObject *object, + E_COMPOSER_HEADER_TABLE (object))); + return; + ++ case PROP_SHELL: ++ g_value_set_object ( ++ value, ++ e_composer_header_table_get_shell ( ++ E_COMPOSER_HEADER_TABLE (object))); ++ return; ++ + case PROP_SIGNATURE: + g_value_set_object ( + value, +@@ -799,6 +825,11 @@ composer_header_table_dispose (GObject *object) + priv->name_selector = NULL; + } + ++ if (priv->shell != NULL) { ++ g_object_unref (priv->shell); ++ priv->shell = NULL; ++ } ++ + /* Chain up to parent's dispose() method. */ + G_OBJECT_CLASS (parent_class)->dispose (object); + } +@@ -916,6 +947,17 @@ composer_header_table_class_init (EComposerHeaderTableClass *class) + + g_object_class_install_property ( + object_class, ++ PROP_SHELL, ++ g_param_spec_object ( ++ "shell", ++ NULL, ++ NULL, ++ E_TYPE_SHELL, ++ G_PARAM_READWRITE | ++ G_PARAM_CONSTRUCT_ONLY)); ++ ++ g_object_class_install_property ( ++ object_class, + PROP_SIGNATURE, + g_param_spec_object ( + "signature", +@@ -1044,9 +1086,21 @@ e_composer_header_table_get_type (void) + } + + GtkWidget * +-e_composer_header_table_new (void) ++e_composer_header_table_new (EShell *shell) ++{ ++ g_return_val_if_fail (E_IS_SHELL (shell), NULL); ++ ++ return g_object_new ( ++ E_TYPE_COMPOSER_HEADER_TABLE, ++ "shell", shell, NULL); ++} ++ ++EShell * ++e_composer_header_table_get_shell (EComposerHeaderTable *table) + { +- return g_object_new (E_TYPE_COMPOSER_HEADER_TABLE, NULL); ++ g_return_val_if_fail (E_IS_COMPOSER_HEADER_TABLE (table), NULL); ++ ++ return table->priv->shell; + } + + EComposerHeader * +diff --git a/composer/e-composer-header-table.h b/composer/e-composer-header-table.h +index 9fe9f5b..856a8e2 100644 +--- a/composer/e-composer-header-table.h ++++ b/composer/e-composer-header-table.h +@@ -23,6 +23,8 @@ + #include + #include + #include ++ ++#include + #include + #include + +@@ -75,8 +77,11 @@ struct _EComposerHeaderTableClass { + }; + + GType e_composer_header_table_get_type (void); +-GtkWidget * e_composer_header_table_new (void); +-EComposerHeader * e_composer_header_table_get_header ++GtkWidget * e_composer_header_table_new (EShell *shell); ++EShell * e_composer_header_table_get_shell ++ (EComposerHeaderTable *table); ++EComposerHeader * ++ e_composer_header_table_get_header + (EComposerHeaderTable *table, + EComposerHeaderType type); + EAccount * e_composer_header_table_get_account +diff --git a/composer/e-composer-private.c b/composer/e-composer-private.c +index 22b4565..df29267 100644 +--- a/composer/e-composer-private.c ++++ b/composer/e-composer-private.c +@@ -127,6 +127,7 @@ void + e_composer_private_constructed (EMsgComposer *composer) + { + EMsgComposerPrivate *priv = composer->priv; ++ EShell *shell; + EFocusTracker *focus_tracker; + GtkhtmlEditor *editor; + GtkUIManager *ui_manager; +@@ -145,6 +146,8 @@ e_composer_private_constructed (EMsgComposer *composer) + html = gtkhtml_editor_get_html (editor); + ui_manager = gtkhtml_editor_get_ui_manager (editor); + ++ shell = e_shell_get_default (); ++ + if (e_msg_composer_get_lite ()) { + #if 0 + /* In the lite composer, for small screens, we are not ready yet +@@ -249,7 +252,7 @@ e_composer_private_constructed (EMsgComposer *composer) + + container = editor->vbox; + +- widget = e_composer_header_table_new (); ++ widget = e_composer_header_table_new (shell); + gtk_container_set_border_width (GTK_CONTAINER (widget), 6); + gtk_box_pack_start (GTK_BOX (editor->vbox), widget, FALSE, FALSE, 0); + if (e_msg_composer_get_lite ()) +diff --git a/widgets/misc/e-account-combo-box.h b/widgets/misc/e-account-combo-box.h +index b624c9b..aa29c97 100644 +--- a/widgets/misc/e-account-combo-box.h ++++ b/widgets/misc/e-account-combo-box.h +@@ -77,8 +77,8 @@ const gchar * e_account_combo_box_get_active_name + gboolean e_account_combo_box_set_active_name + (EAccountComboBox *combo_box, + const gchar *account_name); +- +-gint e_account_combo_box_count_displayed_accounts (EAccountComboBox *combo_box); ++gint e_account_combo_box_count_displayed_accounts ++ (EAccountComboBox *combo_box); + + G_END_DECLS + +-- +cgit v0.8.3.1