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