Index: composer/e-msg-composer.h
===================================================================
--- composer/e-msg-composer.h	(revision 34376)
+++ composer/e-msg-composer.h	(working copy)
@@ -190,6 +190,8 @@
 gchar*			 e_msg_composer_resolve_image_url 		 (EMsgComposer *composer, gchar *url);
 CamelMimePart*		 e_msg_composer_url_requested 			 (EMsgComposer *composer, gchar *url);
 
+void			 e_msg_composer_link_clicked			 (EMsgComposer *composer, const gchar *url);
+
 EMsgComposerHdrs*	 e_msg_composer_get_hdrs			 (EMsgComposer *composer);
 void			 e_msg_composer_set_saved			 (EMsgComposer *composer);
 void			 e_msg_composer_set_send_options		 (EMsgComposer *composer, 
Index: composer/ChangeLog
===================================================================
--- composer/ChangeLog	(revision 34376)
+++ composer/ChangeLog	(working copy)
@@ -1,3 +1,12 @@
+2007-10-12  Milan Crha  <mcrha@redhat.com>
+
+	** Fix for bug #318592
+
+	* e-msg-composer.h: (e_msg_composer_link_clicked):
+	* e-msg-composer.c: (e_msg_composer_link_clicked):
+	Helper function to response on editor's "link_clicked" event.
+	* listener.c: (impl_event): Call helper function on that event.
+
 2007-10-11  Milan Crha  <mcrha@redhat.com>
 
 	** Fix for bug #412360
Index: composer/listener.c
===================================================================
--- composer/listener.c	(revision 34376)
+++ composer/listener.c	(working copy)
@@ -117,6 +117,8 @@
 
 		camel_object_unref (cstream);
 			
+	} else if (!strcmp (name, "link_clicked")) {
+		e_msg_composer_link_clicked (l->composer, BONOBO_ARG_GET_STRING (arg));
 	}
 
 	return rv ? rv : get_any_null ();
Index: composer/e-msg-composer.c
===================================================================
--- composer/e-msg-composer.c	(revision 34376)
+++ composer/e-msg-composer.c	(working copy)
@@ -63,6 +63,7 @@
 
 #include <libgnome/gnome-exec.h>
 #include <libgnome/gnome-help.h>
+#include <libgnome/gnome-url.h>
 #include <glib/gi18n.h>
 #include <libgnomeui/gnome-uidefs.h>
 #include <libgnomeui/gnome-window-icon.h>
@@ -6629,6 +6630,26 @@
 	return part;
 }
 
+void
+e_msg_composer_link_clicked (EMsgComposer *composer, const gchar *url)
+{
+	g_return_if_fail (composer != NULL);
+
+	if (url && *url &&
+	    g_ascii_strncasecmp (url, "mailto:", 7) &&
+	    g_ascii_strncasecmp (url, "thismessage:", 12) &&
+	    g_ascii_strncasecmp (url, "cid:", 4)) {
+		GError *err = NULL;
+
+		gnome_url_show (url, &err);
+
+		if (err) {
+			g_warning ("gnome_url_show: %s", err->message);
+			g_error_free (err);
+		}
+	}
+}
+
 EMsgComposerHdrs*
 e_msg_composer_get_hdrs (EMsgComposer *composer)
 {
