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; return TRUE;
} }
void session *
open_query (server *serv, char *nick, gboolean focus_existing) open_query (server *serv, char *nick, gboolean focus_existing)
{ {
session *sess; session *sess;
sess = find_dialog (serv, nick); sess = find_dialog (serv, nick);
if (!sess) if (!sess)
new_ircwindow (serv, nick, SESS_DIALOG, focus_existing); sess = new_ircwindow (serv, nick, SESS_DIALOG, focus_existing);
else if (focus_existing) else if (focus_existing)
fe_ctrl_gui (sess, 2, 0); /* bring-to-front */ fe_ctrl_gui (sess, 2, 0); /* bring-to-front */
return sess;
} }
static int 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)) 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) if (*msg)
{ {
message_tags_data no_tags = MESSAGE_TAGS_DATA_INIT;
if (!sess->server->connected) if (!sess->server->connected)
{ {
notc_msg (sess); 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))) while ((split_text = split_up_text (sess, msg + offset, cmd_length, split_text)))
{ {
sess->server->p_message (sess->server, nick, 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) if (*split_text)
offset += strlen(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); g_free(split_text);
} }
sess->server->p_message (sess->server, nick, msg + offset); 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; return TRUE;

View File

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