Merge pull request #373 from RichardHitt/issue372
closes Issue372 -- Fix nickname-mouseover recognition
This commit is contained in:
commit
bba00f2b66
@ -188,6 +188,16 @@ static int laststart = 0;
|
|||||||
static int lastend = 0;
|
static int lastend = 0;
|
||||||
static int lasttype = 0;
|
static int lasttype = 0;
|
||||||
|
|
||||||
|
static int
|
||||||
|
strchrs (char c, char *s)
|
||||||
|
{
|
||||||
|
while (*s)
|
||||||
|
if (c == *s++)
|
||||||
|
return TRUE;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define NICKPRE "~+!@%%&"
|
||||||
int
|
int
|
||||||
url_check_word (const char *word)
|
url_check_word (const char *word)
|
||||||
{
|
{
|
||||||
@ -196,11 +206,15 @@ url_check_word (const char *word)
|
|||||||
{
|
{
|
||||||
switch (lasttype)
|
switch (lasttype)
|
||||||
{
|
{
|
||||||
|
char *str;
|
||||||
|
|
||||||
case WORD_NICK:
|
case WORD_NICK:
|
||||||
if (!isalnum (word[laststart]))
|
if (strchrs (word[laststart], NICKPRE))
|
||||||
laststart++;
|
laststart++;
|
||||||
if (!userlist_find (current_sess, &word[laststart]))
|
str = g_strndup (&word[laststart], lastend - laststart);
|
||||||
|
if (!userlist_find (current_sess, str))
|
||||||
lasttype = 0;
|
lasttype = 0;
|
||||||
|
g_free (str);
|
||||||
return lasttype;
|
return lasttype;
|
||||||
case WORD_EMAIL:
|
case WORD_EMAIL:
|
||||||
if (!isalnum (word[laststart]))
|
if (!isalnum (word[laststart]))
|
||||||
@ -448,7 +462,7 @@ re_email (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* NICK description --- */
|
/* NICK description --- */
|
||||||
#define NICKPRE "~+!@%%&"
|
/* For NICKPRE see before url_check_word() */
|
||||||
#define NICKHYP "-"
|
#define NICKHYP "-"
|
||||||
#define NICKLET "a-z"
|
#define NICKLET "a-z"
|
||||||
#define NICKDIG "0-9"
|
#define NICKDIG "0-9"
|
||||||
|
@ -2311,7 +2311,9 @@ mg_word_clicked (GtkWidget *xtext, char *word, GdkEventButton *even)
|
|||||||
menu_urlmenu (even, word);
|
menu_urlmenu (even, word);
|
||||||
break;
|
break;
|
||||||
case WORD_NICK:
|
case WORD_NICK:
|
||||||
menu_nickmenu (sess, even, word + (ispunct (*word)? 1: 0), FALSE);
|
word[end] = 0;
|
||||||
|
word += start;
|
||||||
|
menu_nickmenu (sess, even, word, FALSE);
|
||||||
break;
|
break;
|
||||||
case WORD_CHANNEL:
|
case WORD_CHANNEL:
|
||||||
menu_chanmenu (sess, even, word);
|
menu_chanmenu (sess, even, word);
|
||||||
|
Loading…
Reference in New Issue
Block a user