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]=='+') ?