Now process_numeric() passes the right session context to text_emit() when an
numeric event occurs regarding a nick with a open dialog. Since this session context is potentially passed to plugins this can change the behavior of plugins, but I think this is the intended semantics (http://docs.hexchat.org/en/latest/script_python.html#context-theory). Another consequence is that event messages will be displayed in the query dialog of the nick in question (if a query dialog is open, of course), which I think is sensible. (The initial intention of this patch was actually to report the "No such nick" message in the query dialog when sending a message to a user that has quit.)
This commit is contained in:
parent
dba9c42473
commit
cf59ad2c76
|
@ -938,16 +938,21 @@ process_numeric (session * sess, int n,
|
||||||
}
|
}
|
||||||
|
|
||||||
def:
|
def:
|
||||||
|
{
|
||||||
|
session *sess;
|
||||||
|
|
||||||
if (is_channel (serv, word[4]))
|
if (is_channel (serv, word[4]))
|
||||||
{
|
{
|
||||||
session *realsess = find_channel (serv, word[4]);
|
sess = find_channel (serv, word[4]);
|
||||||
if (!realsess)
|
if (!sess)
|
||||||
realsess = serv->server_session;
|
sess = serv->server_session;
|
||||||
EMIT_SIGNAL (XP_TE_SERVTEXT, realsess, text, word[1], word[2], NULL, 0);
|
}
|
||||||
} else
|
else if ((sess=find_dialog (serv,word[4]))) /* user with an open dialog */
|
||||||
{
|
;
|
||||||
EMIT_SIGNAL (XP_TE_SERVTEXT, serv->server_session, text, word[1],
|
else
|
||||||
word[2], NULL, 0);
|
sess=serv->server_session;
|
||||||
|
|
||||||
|
EMIT_SIGNAL (XP_TE_SERVTEXT, sess, text, word[1], word[2], NULL, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue