When opening a query dialog with /query nick msg, the message was not shown in

the newly opened dialog. This fixes that issue.
This commit is contained in:
Diogo Sousa 2013-10-10 19:51:33 +01:00 committed by TingPing
parent fd13e4046f
commit cf370d7e79
2 changed files with 18 additions and 4 deletions

View File

@ -2986,16 +2986,18 @@ cmd_ping (struct session *sess, char *tbuf, char *word[], char *word_eol[])
return TRUE;
}
void
session *
open_query (server *serv, char *nick, gboolean focus_existing)
{
session *sess;
sess = find_dialog (serv, nick);
if (!sess)
new_ircwindow (serv, nick, SESS_DIALOG, focus_existing);
sess = new_ircwindow (serv, nick, SESS_DIALOG, focus_existing);
else if (focus_existing)
fe_ctrl_gui (sess, 2, 0); /* bring-to-front */
return sess;
}
static int
@ -3017,10 +3019,14 @@ cmd_query (struct session *sess, char *tbuf, char *word[], char *word_eol[])
if (*nick && !is_channel (sess->server, nick))
{
open_query (sess->server, nick, focus);
struct session *nick_sess;
nick_sess = open_query (sess->server, nick, focus);
if (*msg)
{
message_tags_data no_tags = MESSAGE_TAGS_DATA_INIT;
if (!sess->server->connected)
{
notc_msg (sess);
@ -3030,6 +3036,9 @@ cmd_query (struct session *sess, char *tbuf, char *word[], char *word_eol[])
while ((split_text = split_up_text (sess, msg + offset, cmd_length, split_text)))
{
sess->server->p_message (sess->server, nick, split_text);
inbound_chanmsg (nick_sess->server, nick_sess, nick_sess->channel,
nick_sess->server->nick, split_text, TRUE, FALSE,
&no_tags);
if (*split_text)
offset += strlen(split_text);
@ -3037,6 +3046,9 @@ cmd_query (struct session *sess, char *tbuf, char *word[], char *word_eol[])
g_free(split_text);
}
sess->server->p_message (sess->server, nick, msg + offset);
inbound_chanmsg (nick_sess->server, nick_sess, nick_sess->channel,
nick_sess->server->nick, msg + offset, TRUE, FALSE,
&no_tags);
}
return TRUE;

View File

@ -20,6 +20,8 @@
#ifndef HEXCHAT_OUTBOUND_H
#define HEXCHAT_OUTBOUND_H
#include "hexchat.h"
extern const struct commands xc_cmds[];
extern GSList *menu_list;
@ -34,7 +36,7 @@ void notc_msg (session *sess);
void server_sendpart (server * serv, char *channel, char *reason);
void server_sendquit (session * sess);
int menu_streq (const char *s1, const char *s2, int def);
void open_query (server *serv, char *nick, gboolean focus_existing);
session *open_query (server *serv, char *nick, gboolean focus_existing);
gboolean load_perform_file (session *sess, char *file);
#endif