diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/event/server_events.c | 5 | ||||
-rw-r--r-- | src/ui/mucwin.c | 35 | ||||
-rw-r--r-- | src/ui/ui.h | 3 |
3 files changed, 21 insertions, 22 deletions
diff --git a/src/event/server_events.c b/src/event/server_events.c index 3e054fa9..84bc407a 100644 --- a/src/event/server_events.c +++ b/src/event/server_events.c @@ -155,7 +155,10 @@ void sv_ev_room_history(const char *const room_jid, const char *const nick, GDateTime *timestamp, const char *const message) { - mucwin_history(room_jid, nick, timestamp, message); + ProfMucWin *mucwin = wins_get_muc(room_jid); + if (mucwin) { + mucwin_history(mucwin, nick, timestamp, message); + } } void diff --git a/src/ui/mucwin.c b/src/ui/mucwin.c index f300abec..b0990cd8 100644 --- a/src/ui/mucwin.c +++ b/src/ui/mucwin.c @@ -332,29 +332,26 @@ mucwin_nick_change(ProfMucWin *mucwin, const char *const nick) } void -mucwin_history(const char *const roomjid, const char *const nick, - GDateTime *timestamp, const char *const message) +mucwin_history(ProfMucWin *mucwin, const char *const nick, GDateTime *timestamp, const char *const message) { - ProfWin *window = (ProfWin*)wins_get_muc(roomjid); - if (window == NULL) { - log_error("Room history message received from %s, but no window open for %s", nick, roomjid); - } else { - GString *line = g_string_new(""); + assert(mucwin != NULL); - if (strncmp(message, "/me ", 4) == 0) { - g_string_append(line, "*"); - g_string_append(line, nick); - g_string_append(line, " "); - g_string_append(line, message + 4); - } else { - g_string_append(line, nick); - g_string_append(line, ": "); - g_string_append(line, message); - } + ProfWin *window = (ProfWin*)mucwin; + GString *line = g_string_new(""); - win_print(window, '-', 0, timestamp, NO_COLOUR_DATE, 0, "", line->str); - g_string_free(line, TRUE); + if (strncmp(message, "/me ", 4) == 0) { + g_string_append(line, "*"); + g_string_append(line, nick); + g_string_append(line, " "); + g_string_append(line, message + 4); + } else { + g_string_append(line, nick); + g_string_append(line, ": "); + g_string_append(line, message); } + + win_print(window, '-', 0, timestamp, NO_COLOUR_DATE, 0, "", line->str); + g_string_free(line, TRUE); } void diff --git a/src/ui/ui.h b/src/ui/ui.h index df5233bc..9784c569 100644 --- a/src/ui/ui.h +++ b/src/ui/ui.h @@ -173,8 +173,7 @@ void mucwin_occupant_affiliation_change(ProfMucWin *mucwin, const char *const ni void mucwin_occupant_role_and_affiliation_change(ProfMucWin *mucwin, const char *const nick, const char *const role, const char *const affiliation, const char *const actor, const char *const reason); void mucwin_roster(ProfMucWin *mucwin, GList *occupants, const char *const presence); -void mucwin_history(const char *const roomjid, const char *const nick, GDateTime *timestamp, - const char *const message); +void mucwin_history(ProfMucWin *mucwin, const char *const nick, GDateTime *timestamp, const char *const message); void mucwin_message(const char *const roomjid, const char *const nick, const char *const message); void mucwin_subject(const char *const roomjid, const char *const nick, const char *const subject); void mucwin_requires_config(const char *const roomjid); |