Fix URL detection
This commit is contained in:
parent
b4e78e0455
commit
59f32ccb3a
@ -202,6 +202,16 @@ url_check_word (char *word, int len)
|
|||||||
const char *at, *dot;
|
const char *at, *dot;
|
||||||
int i, dots;
|
int i, dots;
|
||||||
|
|
||||||
|
/* this is pretty much the same as in logmask_is_fullpath() except with length checks */
|
||||||
|
#ifdef WIN32
|
||||||
|
if ((len > 1 && word[0] == '\\') || (len > 2 && (((word[0] >= 'A' && word[0] <= 'Z') || (word[0] >= 'a' && word[0] <= 'z')) && word[1] == ':')))
|
||||||
|
#else
|
||||||
|
if (len > 1 && word[0] != '/')
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
return WORD_PATH;
|
||||||
|
}
|
||||||
|
|
||||||
if (len > 1 && word[1] == '#' && strchr("@+^%*#", word[0]))
|
if (len > 1 && word[1] == '#' && strchr("@+^%*#", word[0]))
|
||||||
return WORD_CHANNEL;
|
return WORD_CHANNEL;
|
||||||
|
|
||||||
|
@ -8,7 +8,9 @@ extern void *url_tree;
|
|||||||
#define WORD_CHANNEL 3
|
#define WORD_CHANNEL 3
|
||||||
#define WORD_HOST 4
|
#define WORD_HOST 4
|
||||||
#define WORD_EMAIL 5
|
#define WORD_EMAIL 5
|
||||||
|
/* anything >0 will be displayed as a link by gtk_xtext_motion_notify() */
|
||||||
#define WORD_DIALOG -1
|
#define WORD_DIALOG -1
|
||||||
|
#define WORD_PATH -2
|
||||||
|
|
||||||
void url_clear (void);
|
void url_clear (void);
|
||||||
void url_save (const char *fname, const char *mode, gboolean fullpath);
|
void url_save (const char *fname, const char *mode, gboolean fullpath);
|
||||||
|
@ -1080,16 +1080,18 @@ fe_open_url_inner (const char *url)
|
|||||||
static void
|
static void
|
||||||
fe_open_url_locale (const char *url)
|
fe_open_url_locale (const char *url)
|
||||||
{
|
{
|
||||||
#ifndef WIN32
|
/* the http:// part's missing, prepend it, otherwise it won't always work */
|
||||||
if (url[0] != '/' && strchr (url, ':') == NULL)
|
if (strchr (url, ':') == NULL)
|
||||||
{
|
{
|
||||||
url = g_strdup_printf ("http://%s", url);
|
url = g_strdup_printf ("http://%s", url);
|
||||||
fe_open_url_inner (url);
|
fe_open_url_inner (url);
|
||||||
g_free ((char *)url);
|
g_free ((char *)url);
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
#endif
|
/* we have a sane URL, send it to the browser untouched */
|
||||||
|
else
|
||||||
|
{
|
||||||
fe_open_url_inner (url);
|
fe_open_url_inner (url);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -2291,6 +2291,7 @@ mg_word_clicked (GtkWidget *xtext, char *word, GdkEventButton *even)
|
|||||||
switch (mg_word_check (xtext, word, strlen (word)))
|
switch (mg_word_check (xtext, word, strlen (word)))
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
|
case WORD_PATH:
|
||||||
menu_middlemenu (sess, even);
|
menu_middlemenu (sess, even);
|
||||||
break;
|
break;
|
||||||
case WORD_URL:
|
case WORD_URL:
|
||||||
|
Loading…
Reference in New Issue
Block a user