1
0
mirror of https://github.com/irssi/irssi.git synced 2024-09-29 04:45:57 -04:00

Process the nick changes in queries before the PRIVMSG is handled.

Otherwise we end up with the message in the status window since the
frontend knows jack shit about the casemapping option when it tries to
find the associated window for the query.
This commit is contained in:
LemonBoy 2016-12-15 15:22:30 +01:00
parent 618c8bd10e
commit 0d6add02cf
2 changed files with 7 additions and 16 deletions

View File

@ -78,6 +78,13 @@ static void event_privmsg(SERVER_REC *server, const char *data,
if (!server_has_nick(server, query->name))
query_change_nick(query, nick);
}
} else {
/* process the changes to the query structure now, before the
* privmsg is dispatched. */
if (g_strcmp0(query->name, nick) != 0)
query_change_nick(query, nick);
if (address != NULL && g_strcmp0(query->address, address) != 0)
query_change_address(query, address);
}
}

View File

@ -79,20 +79,6 @@ static void check_query_changes(IRC_SERVER_REC *server, const char *nick,
}
}
static void event_privmsg(IRC_SERVER_REC *server, const char *data,
const char *nick, const char *address)
{
char *params, *target, *msg;
g_return_if_fail(data != NULL);
if (nick == NULL)
return;
params = event_get_params(data, 2 | PARAM_FLAG_GETREST, &target, &msg);
check_query_changes(server, nick, address, target);
g_free(params);
}
static void ctcp_action(IRC_SERVER_REC *server, const char *msg,
const char *nick, const char *address,
const char *target)
@ -117,14 +103,12 @@ static void event_nick(SERVER_REC *server, const char *data,
void irc_queries_init(void)
{
signal_add_last("event privmsg", (SIGNAL_FUNC) event_privmsg);
signal_add_last("ctcp action", (SIGNAL_FUNC) ctcp_action);
signal_add("event nick", (SIGNAL_FUNC) event_nick);
}
void irc_queries_deinit(void)
{
signal_remove("event privmsg", (SIGNAL_FUNC) event_privmsg);
signal_remove("ctcp action", (SIGNAL_FUNC) ctcp_action);
signal_remove("event nick", (SIGNAL_FUNC) event_nick);
}