File xchat-desktop-launch.patch of Package xchat

Index: src/fe-gtk/maingui.c
===================================================================
--- src/fe-gtk/maingui.c.orig
+++ src/fe-gtk/maingui.c
@@ -2284,6 +2284,7 @@ mg_word_check (GtkWidget * xtext, char *
 static void
 mg_word_clicked (GtkWidget *xtext, char *word, GdkEventButton *even)
 {
+	char *free_word = NULL;
 	session *sess = current_sess;
 
 	if (even->button == 1)			/* left button */
@@ -2300,7 +2301,18 @@ mg_word_clicked (GtkWidget *xtext, char
 			{
 			case WORD_URL:
 			case WORD_HOST:
+				if (!strncasecmp (word, "irc.", 4) && word[4] != '.')
+			    		word = free_word = g_strdup_printf ("irc://%s/", word);
+				else if (!strncasecmp (word, "ftp.", 4) && word[4] != '.')
+					word = free_word = g_strdup_printf ("ftp://%s/", word);
+				else if (!strncasecmp (word, "www.", 4) && word[4] != '.')
+					word = free_word = g_strdup_printf ("http://%s/", word);
+				else
+					free_word = NULL;
 				fe_open_url (word);
+				if (free_word)
+					g_free (free_word);
+				break;
 			}
 		}
 		return;
@@ -2322,7 +2334,17 @@ mg_word_clicked (GtkWidget *xtext, char
 		break;
 	case WORD_URL:
 	case WORD_HOST:
+		if (!strncasecmp (word, "irc.", 4) && word[4] != '.')
+			word = free_word = g_strdup_printf ("irc://%s/", word);
+		else if (!strncasecmp (word, "ftp.", 4) && word[4] != '.')
+			word = free_word = g_strdup_printf ("ftp://%s/", word);
+		else if (!strncasecmp (word, "www.", 4) && word[4] != '.')
+			word = free_word = g_strdup_printf ("http://%s/", word);
+		else
+			free_word = NULL;
 		menu_urlmenu (even, word);
+		if (free_word)
+			g_free (free_word);
 		break;
 	case WORD_NICK:
 		menu_nickmenu (sess, even, (word[0]=='@' || word[0]=='+' || word[0]=='%') ?