X-Git-Url: http://git.silcnet.org/gitweb/?p=silc.git;a=blobdiff_plain;f=apps%2Firssi%2Fsrc%2Ffe-common%2Fsilc%2Ffe-silc-messages.c;h=5d87ae25d372ed7cbf5b8c0befb26126352c575a;hp=acded96f8f617c30e1ed19342f40b73b48bb064f;hb=52e57c880aba9c5e89f59d962eb9af75670b76e0;hpb=ae1482a76c29db9fdcd6ed6cf63d312a37a5cb01 diff --git a/apps/irssi/src/fe-common/silc/fe-silc-messages.c b/apps/irssi/src/fe-common/silc/fe-silc-messages.c index acded96f..5d87ae25 100644 --- a/apps/irssi/src/fe-common/silc/fe-silc-messages.c +++ b/apps/irssi/src/fe-common/silc/fe-silc-messages.c @@ -57,6 +57,7 @@ static void sig_signed_message_public(SERVER_REC * server, const char *msg, const char *nickmode, *printnick; int for_me, print_channel, level; char *color, *freemsg = NULL; + HILIGHT_REC *hilight; /* NOTE: this may return NULL if some channel is just closed with /WINDOW CLOSE and server still sends the few last messages */ @@ -66,9 +67,9 @@ static void sig_signed_message_public(SERVER_REC * server, const char *msg, for_me = !settings_get_bool("hilight_nick_matches") ? FALSE : nick_match_msg(chanrec, msg, server->nick); - color = for_me ? NULL : - (char *)hilight_match_nick(server, target, nick, address, MSGLEVEL_PUBLIC, - msg); + hilight = for_me ? NULL : + hilight_match_nick(server, target, nick, address, MSGLEVEL_PUBLIC, msg); + color = (hilight == NULL) ? NULL : hilight_get_color(hilight); print_channel = chanrec == NULL || !window_item_is_active((WI_ITEM_REC *) chanrec); @@ -77,7 +78,7 @@ static void sig_signed_message_public(SERVER_REC * server, const char *msg, print_channel = TRUE; level = MSGLEVEL_PUBLIC; - if (for_me || color != NULL) + if (for_me) level |= MSGLEVEL_HILIGHT; if (settings_get_bool("emphasis")) @@ -91,32 +92,31 @@ static void sig_signed_message_public(SERVER_REC * server, const char *msg, if (printnick == NULL) printnick = nick; - if (!print_channel) { - /* message to active channel in window */ - if (color != NULL) { - /* highlighted nick */ - printformat_module("fe-common/silc", server, target, - level, VERIFIED_MSG(verified, SILCTXT_PUBMSG_HILIGHT), - color, printnick, msg, nickmode); - } else { - printformat_module("fe-common/silc", server, target, level, - for_me ? VERIFIED_MSG(verified, SILCTXT_PUBMSG_ME) : - VERIFIED_MSG(verified,SILCTXT_PUBMSG), - printnick, msg, nickmode); - } - } else { - /* message to not existing/active channel */ - if (color != NULL) { - /* highlighted nick */ - printformat_module("fe-common/silc", server, target, level, + if (color != NULL) { + /* highlighted nick */ + TEXT_DEST_REC dest; + format_create_dest(&dest, server, target, level, NULL); + hilight_update_text_dest(&dest,hilight); + if (!print_channel) /* message to active channel in windpw */ + printformat_module_dest("fe-common/silc", &dest, + VERIFIED_MSG(verified, SILCTXT_PUBMSG_HILIGHT), + color, printnick, msg, nickmode); + else /* message to not existing/active channel */ + printformat_module_dest("fe-common/silc", &dest, VERIFIED_MSG(verified, SILCTXT_PUBMSG_HILIGHT_CHANNEL), color, printnick, target, msg, nickmode); - } else { + + } else { + if (!print_channel) + printformat_module("fe-common/silc", server, target, level, + for_me ? VERIFIED_MSG(verified, SILCTXT_PUBMSG_ME) : + VERIFIED_MSG(verified,SILCTXT_PUBMSG), + printnick, msg, nickmode); + else printformat_module("fe-common/silc", server, target, level, for_me ? VERIFIED_MSG(verified, SILCTXT_PUBMSG_ME_CHANNEL) : VERIFIED_MSG(verified, SILCTXT_PUBMSG_CHANNEL), printnick, target, msg, nickmode); - } } g_free_not_null(freemsg);