aboutsummaryrefslogtreecommitdiffstats
path: root/mail
diff options
context:
space:
mode:
Diffstat (limited to 'mail')
-rw-r--r--mail/ChangeLog24
-rw-r--r--mail/component-factory.c4
-rw-r--r--mail/mail-callbacks.c21
-rw-r--r--mail/mail-callbacks.h2
-rw-r--r--mail/mail-display.c2
-rw-r--r--mail/mail-local.c7
6 files changed, 50 insertions, 10 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog
index 867748865b..c274b9d337 100644
--- a/mail/ChangeLog
+++ b/mail/ChangeLog
@@ -1,3 +1,27 @@
+2002-12-07 leon.zhang <leon.zhang@sun.com>
+
+ * component-factory.c (user_create_new_item_cb): transfer the
+ current acount info, which will be regarded as the sender of
+ new composer, to send_to_url().
+
+ * mail-callbacks.h (send_to_url): Add a new parameter for parent
+ folder uri.
+
+ * mail-callbacks.c (send_to_url): Create composer base on source
+ account info from parent folder physical uri.
+ (post_to_url): create composer based on current account from
+ parent folder physical uri.
+
+ * mail-display.c (on_link_clicked): Apply new format of function:
+ send_to_url.
+
+ Fixes bug #35123 #35289
+
+2003-01-24 Not Zed <NotZed@Ximian.com>
+
+ * mail-local.c (non_equal): We do actually need to check they are
+ file url's, otherwise, all url's match.
+
2003-01-23 Rodney Dawes <dobey@ximian.com>
* folder-browser.c (fb_resize_cb): Use button_release instead of
diff --git a/mail/component-factory.c b/mail/component-factory.c
index 9a2a5e2089..ef655c3d90 100644
--- a/mail/component-factory.c
+++ b/mail/component-factory.c
@@ -869,7 +869,7 @@ handle_external_uri_cb (EvolutionShellComponent *shell_component,
/* FIXME: Sigh. This shouldn't be here. But the code is messy, so
I'll just put it here anyway. */
- send_to_url (uri);
+ send_to_url (uri, NULL);
}
static void
@@ -880,7 +880,7 @@ user_create_new_item_cb (EvolutionShellComponent *shell_component,
gpointer data)
{
if (!strcmp (id, "message")) {
- send_to_url (NULL);
+ send_to_url (NULL, parent_folder_physical_uri);
return;
} else if (!strcmp (id, "post")) {
post_to_url (parent_folder_physical_uri);
diff --git a/mail/mail-callbacks.c b/mail/mail-callbacks.c
index 8a30ece8cf..7957121f10 100644
--- a/mail/mail-callbacks.c
+++ b/mail/mail-callbacks.c
@@ -806,18 +806,22 @@ compose_msg (GtkWidget *widget, gpointer user_data)
/* Send according to a mailto (RFC 2368) URL. */
void
-send_to_url (const char *url)
+send_to_url (const char *url, const char *parent_uri)
{
struct _composer_callback_data *ccd;
GtkWidget *composer;
+ EAccount *account = NULL;
/* FIXME: no way to get folder browser? Not without
* big pain in the ass, as far as I can tell */
if (!check_send_configuration (NULL))
return;
- /* Tell create_msg_composer to use the default email profile */
- composer = create_msg_composer (NULL, FALSE, url);
+ if (parent_uri)
+ account = mail_config_get_account_by_source_url (parent_uri);
+
+ composer = create_msg_composer (account, FALSE, url);
+
if (!composer)
return;
@@ -1503,8 +1507,17 @@ post_to_url (const char *url)
{
struct _composer_callback_data *ccd;
GtkWidget *composer;
+ EAccount *account = NULL;
+
+ /* FIXME: no way to get folder browser? Not without
+ * big pain in the ass, as far as I can tell */
+ if (!check_send_configuration (NULL))
+ return;
+
+ if (url)
+ account = mail_config_get_account_by_source_url (url);
- composer = create_msg_composer (NULL, TRUE, NULL);
+ composer = create_msg_composer (account, TRUE, NULL);
if (!composer)
return;
diff --git a/mail/mail-callbacks.h b/mail/mail-callbacks.h
index cc34c3bbd6..6b2c4573c9 100644
--- a/mail/mail-callbacks.h
+++ b/mail/mail-callbacks.h
@@ -48,7 +48,7 @@ void fetch_mail (GtkWidget *widget, gpointer user_data);
void send_queued_mail (GtkWidget *widget, gpointer user_data);
void compose_msg (GtkWidget *widget, gpointer user_data);
-void send_to_url (const char *url);
+void send_to_url (const char *url, const char *parent_uri);
void forward_inline (GtkWidget *widget, gpointer user_data);
void forward_quoted (GtkWidget *widget, gpointer user_data);
diff --git a/mail/mail-display.c b/mail/mail-display.c
index e156f72243..4531555449 100644
--- a/mail/mail-display.c
+++ b/mail/mail-display.c
@@ -298,7 +298,7 @@ on_link_clicked (GtkHTML *html, const char *url, MailDisplay *md)
{
if (!strncasecmp (url, "mailto:", 7)) {
- send_to_url (url);
+ send_to_url (url, NULL);
} else if (*url == '#') {
mail_display_jump_to_anchor (md, url);
} else {
diff --git a/mail/mail-local.c b/mail/mail-local.c
index 9d7b022617..010ea12eec 100644
--- a/mail/mail-local.c
+++ b/mail/mail-local.c
@@ -1120,9 +1120,12 @@ non_hash (gconstpointer key)
}
static gint
-non_equal (gconstpointer a, gconstpointer b)
+non_equal (gconstpointer ap, gconstpointer bp)
{
- return TRUE;
+ const CamelURL *a = ap, *b = bp;
+
+ return strcmp(a->protocol, "file") == 0
+ && strcmp(a->protocol, b->protocol) == 0;
}
static void