diff options
-rw-r--r-- | mail/ChangeLog | 7 | ||||
-rw-r--r-- | mail/mail-display.c | 26 |
2 files changed, 30 insertions, 3 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog index e88fc24b30..1f7a598314 100644 --- a/mail/ChangeLog +++ b/mail/ChangeLog @@ -1,3 +1,10 @@ +2001-07-10 Federico Mena Quintero <federico@ximian.com> + + * mail-display.c (link_copy_location): Set the CLIPBOARD + selection as well as the primary selection so that Edit/Paste will + work in other programs (e.g. Netscape). + (mail_display_new): Add the target for the CLIPBOARD selection. + 2001-07-10 Jason Leach <jleach@ximian.com> [Bug #4305: Make the automatic mark-as-read timer optional] diff --git a/mail/mail-display.c b/mail/mail-display.c index 00212c8868..5edc1242a5 100644 --- a/mail/mail-display.c +++ b/mail/mail-display.c @@ -1359,11 +1359,25 @@ link_save_as (GtkWidget *w, MailDisplay *mail_display) static void link_copy_location (GtkWidget *w, MailDisplay *mail_display) { + GdkAtom clipboard_atom; + g_free (mail_display->selection); mail_display->selection = g_strdup (mail_display->html->pointer_url); - - if (! gtk_selection_owner_set (GTK_WIDGET (mail_display->invisible), GDK_SELECTION_PRIMARY, GDK_CURRENT_TIME)) - g_warning ("Damn"); + + clipboard_atom = gdk_atom_intern ("CLIPBOARD", FALSE); + if (clipboard_atom == GDK_NONE) + return; /* failed */ + + /* We don't check the return values of the following since there is not + * much we can do if we cannot assert the selection. + */ + + gtk_selection_owner_set (GTK_WIDGET (mail_display->invisible), + GDK_SELECTION_PRIMARY, + GDK_CURRENT_TIME); + gtk_selection_owner_set (GTK_WIDGET (mail_display->invisible), + clipboard_atom, + GDK_CURRENT_TIME); } static void @@ -1831,6 +1845,7 @@ mail_display_new (void) { MailDisplay *mail_display = gtk_type_new (mail_display_get_type ()); GtkWidget *scroll, *html; + GdkAtom clipboard_atom; gtk_box_set_homogeneous (GTK_BOX (mail_display), FALSE); gtk_widget_show (GTK_WIDGET (mail_display)); @@ -1880,6 +1895,11 @@ mail_display_new (void) gtk_selection_add_target (mail_display->invisible, GDK_SELECTION_PRIMARY, GDK_SELECTION_TYPE_STRING, 1); + clipboard_atom = gdk_atom_intern ("CLIPBOARD", FALSE); + if (clipboard_atom != GDK_NONE) + gtk_selection_add_target (mail_display->invisible, + clipboard_atom, GDK_SELECTION_TYPE_STRING, 1); + mail_display->scroll = E_SCROLL_FRAME (scroll); mail_display->html = GTK_HTML (html); mail_display->stream = NULL; |