diff options
Diffstat (limited to 'mail')
-rw-r--r-- | mail/ChangeLog | 8 | ||||
-rw-r--r-- | mail/component-factory.c | 39 | ||||
-rw-r--r-- | mail/folder-browser.c | 4 |
3 files changed, 43 insertions, 8 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog index 9af5e3ad20..b1c0dccf50 100644 --- a/mail/ChangeLog +++ b/mail/ChangeLog @@ -1,5 +1,13 @@ 2001-07-26 Jeffrey Stedfast <fejj@ximian.com> + * folder-browser.c (message_list_drag_data_get): If we don't have + any messages selected, break out. This fixes bug #5612. + + * component-factory.c (xfer_folder): Fixed a strstr (url, + "noselect=yes") brokenness. + (destination_folder_handle_motion): Same. + (destination_folder_handle_drop): And again here. + * mail-format.c (handle_application_pgp): Implemented. (setup_mime_tables): Setup the application/pgp handler to use handle_application_pgp instead of handle_text_plain. diff --git a/mail/component-factory.c b/mail/component-factory.c index f64985e6b4..b9b9fa698d 100644 --- a/mail/component-factory.c +++ b/mail/component-factory.c @@ -132,12 +132,13 @@ create_view (EvolutionShellComponent *shell_component, CamelURL *url; url = camel_url_new (physical_uri, NULL); - noselect = camel_url_get_param (url, "noselect"); - if (url && noselect && !g_strcasecmp (noselect, "yes")) + noselect = url ? camel_url_get_param (url, "noselect") : NULL; + if (noselect && !g_strcasecmp (noselect, "yes")) control = create_noselect_control (); else control = folder_browser_factory_new_control (physical_uri, corba_shell); + camel_url_free (url); } else if (g_strcasecmp (folder_type, "mailstorage") == 0) { CamelService *store; EvolutionStorage *storage; @@ -282,16 +283,24 @@ xfer_folder (EvolutionShellComponent *shell_component, void *closure) { CORBA_Environment ev; + const char *noselect; CamelFolder *source; CamelException ex; GPtrArray *uids; + CamelURL *url; - if (strstr (destination_physical_uri, "noselect=yes")) { + url = camel_url_new (destination_physical_uri, NULL); + noselect = url ? camel_url_get_param (url, "noselect") : NULL; + + if (noselect && !g_strcasecmp (noselect, "yes")) { + camel_url_free (url); GNOME_Evolution_ShellComponentListener_notifyResult (listener, GNOME_Evolution_ShellComponentListener_UNSUPPORTED_OPERATION, &ev); return; } - + + camel_url_free (url); + if (strcmp (type, "mail") != 0) { GNOME_Evolution_ShellComponentListener_notifyResult (listener, GNOME_Evolution_ShellComponentListener_UNSUPPORTED_TYPE, &ev); @@ -358,14 +367,22 @@ destination_folder_handle_motion (EvolutionShellComponentDndDestinationFolder *f GNOME_Evolution_ShellComponentDnd_Action *suggested_action_return, gpointer user_data) { + const char *noselect; + CamelURL *url; + g_print ("in destination_folder_handle_motion (%s)\n", physical_uri); - - if (strstr (physical_uri, "noselect=yes")) + + url = camel_url_new (physical_uri, NULL); + noselect = camel_url_get_param (url, "noselect"); + + if (noselect && !g_strcasecmp (noselect, "yes")) /* uh, no way to say "illegal" */ *suggested_action_return = GNOME_Evolution_ShellComponentDnd_ACTION_DEFAULT; else *suggested_action_return = GNOME_Evolution_ShellComponentDnd_ACTION_MOVE; + camel_url_free (url); + return TRUE; } @@ -413,6 +430,7 @@ destination_folder_handle_drop (EvolutionShellComponentDndDestinationFolder *des { char *tmp, *url, **urls, *in, *inptr, *inend; gboolean retval = FALSE; + const char *noselect; CamelFolder *folder; CamelStream *stream; CamelException ex; @@ -423,9 +441,14 @@ destination_folder_handle_drop (EvolutionShellComponentDndDestinationFolder *des if (action == GNOME_Evolution_ShellComponentDnd_ACTION_LINK) return FALSE; /* we can't create links */ - if (strstr (physical_uri, "noselect=yes")) + uri = camel_url_new (physical_uri, NULL); + noselect = uri ? camel_url_get_param (uri, "noselect") : NULL; + if (noselect && !g_strcasecmp (noselect, "yes")) { + camel_url_free (uri); return FALSE; - + } + camel_url_free (uri); + g_print ("in destination_folder_handle_drop (%s)\n", physical_uri); for (type = 0; accepted_dnd_types[type]; type++) diff --git a/mail/folder-browser.c b/mail/folder-browser.c index 76983955dd..3d6b763265 100644 --- a/mail/folder-browser.c +++ b/mail/folder-browser.c @@ -203,6 +203,10 @@ message_list_drag_data_get (ETree *tree, int row, ETreePath path, int col, uids = g_ptr_array_new (); message_list_foreach (fb->message_list, add_uid, uids); + if (uids->len == 0) { + g_ptr_array_free (uids, TRUE); + return; + } switch (info) { case DND_TARGET_TYPE_TEXT_URI_LIST: |