diff options
author | James Booth <boothj5@gmail.com> | 2015-06-21 18:29:20 +0100 |
---|---|---|
committer | James Booth <boothj5@gmail.com> | 2015-06-21 18:29:20 +0100 |
commit | 13a612cbc2978496e6587ff54a8df4165575b5ba (patch) | |
tree | b9b243db7575e5d7ca470421ef56bf9a8c70ebcd /src/event/server_events.c | |
parent | 8d2d92360370747a34c25319a63d91a2775ffb85 (diff) | |
download | profani-tty-13a612cbc2978496e6587ff54a8df4165575b5ba.tar.gz |
Moved window creation to sv_ev_incoming_message
Diffstat (limited to 'src/event/server_events.c')
-rw-r--r-- | src/event/server_events.c | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/src/event/server_events.c b/src/event/server_events.c index 5af19f7f..74eb8ae2 100644 --- a/src/event/server_events.c +++ b/src/event/server_events.c @@ -43,6 +43,7 @@ #include "config/preferences.h" #include "config/account.h" #include "roster_list.h" +#include "window_list.h" #ifdef HAVE_LIBOTR #include "otr/otr.h" @@ -171,16 +172,24 @@ sv_ev_carbon(char *barejid, char *message) void sv_ev_incoming_message(char *barejid, char *resource, char *message) { + gboolean new_win = FALSE; + ProfChatWin *chatwin = wins_get_chat(barejid); + if (!chatwin) { + ProfWin *window = wins_new_chat(barejid); + chatwin = (ProfChatWin*)window; + new_win = TRUE; + } + #ifdef HAVE_LIBOTR gboolean decrypted = FALSE; char *otr_res = otr_on_message_recv(barejid, resource, message, &decrypted); if (otr_res) { - ui_incoming_msg(barejid, resource, otr_res, NULL); + ui_incoming_msg(chatwin, resource, otr_res, NULL, new_win); chat_log_otr_msg_in(barejid, otr_res, decrypted); otr_free_message(otr_res); } #else - ui_incoming_msg(barejid, resource, message, NULL); + ui_incoming_msg(chatwin, resource, message, NULL, new_win); chat_log_msg_in(barejid, message); #endif } @@ -194,7 +203,15 @@ sv_ev_delayed_private_message(const char * const fulljid, char *message, GTimeVa void sv_ev_delayed_message(char *barejid, char *message, GTimeVal tv_stamp) { - ui_incoming_msg(barejid, NULL, message, &tv_stamp); + gboolean new_win = FALSE; + ProfChatWin *chatwin = wins_get_chat(barejid); + if (!chatwin) { + ProfWin *window = wins_new_chat(barejid); + chatwin = (ProfChatWin*)window; + new_win = TRUE; + } + + ui_incoming_msg(chatwin, NULL, message, &tv_stamp, new_win); chat_log_msg_in_delayed(barejid, message, &tv_stamp); } |