File xchat-desktop-launch.patch of Package xchat

--- src/fe-gtk/maingui.c
+++ src/fe-gtk/maingui.c
@@ -2018,6 +2018,7 @@
 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 */
@@ -2034,7 +2035,18 @@
 			{
 			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;
@@ -2056,7 +2068,17 @@
 		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]=='+') ?
openSUSE Build Service is sponsored by