X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=apps%2Firssi%2Fsrc%2Ffe-common%2Fsilc%2Ffe-silc-messages.c;h=5d87ae25d372ed7cbf5b8c0befb26126352c575a;hb=5435a706713661b0e5d3744d27b14ecae977ca45;hp=475c9e9ef717e6c76d22897a73f1ed20afe65508;hpb=03485d34414f8fdeeb28d92c817bc127a67513c7;p=silc.git 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 475c9e9e..5d87ae25 100644 --- a/apps/irssi/src/fe-common/silc/fe-silc-messages.c +++ b/apps/irssi/src/fe-common/silc/fe-silc-messages.c @@ -10,7 +10,7 @@ it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the @@ -52,11 +52,12 @@ static void sig_signed_message_public(SERVER_REC * server, const char *msg, int verified) { CHANNEL_REC *chanrec; - NICK_REC *nickrec = NULL; /* we cheat here a little to keep the limit of + NICK_REC *nickrec = NULL; /* we cheat here a little to keep the limit of 6 parameters to a signal handler ... */ 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 : - 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); @@ -225,7 +225,7 @@ static void sig_signed_message_own_private(SERVER_REC * server, g_free_not_null(freemsg); } -static void sig_message_own_action_all(SERVER_REC *server, +static void sig_message_own_action_all(SERVER_REC *server, const char *msg, const char *target, bool is_channel, bool is_signed) { @@ -243,7 +243,7 @@ static void sig_message_own_action_all(SERVER_REC *server, printformat(server, target, MSGLEVEL_ACTIONS | MSGLEVEL_NOHILIGHT | MSGLEVEL_NO_ACT | (is_channel ? MSGLEVEL_PUBLIC : MSGLEVEL_MSGS), - item != NULL ? + item != NULL ? (is_signed ? SILCTXT_OWN_ACTION_SIGNED : SILCTXT_OWN_ACTION) : (is_signed ? SILCTXT_OWN_ACTION_TARGET_SIGNED : SILCTXT_OWN_ACTION_TARGET), @@ -300,11 +300,11 @@ static void sig_message_action_all(SERVER_REC *server, const char *msg, msg = freemsg = expand_emphasis(item, msg); if (is_channel) { - /* channel action */ + /* channel action */ if (window_item_is_active(item)) { /* message to active channel in window */ printformat(server, target, level, - VERIFIED_MSG2(verified, SILCTXT_ACTION_PUBLIC), + VERIFIED_MSG2(verified, SILCTXT_ACTION_PUBLIC), nick, target, msg); } else { /* message to not existing/active channel */ @@ -352,7 +352,7 @@ static void sig_message_private_action_signed(SERVER_REC *server, sig_message_action_all(server, msg, nick, address, target, FALSE, verified); } -static void sig_message_own_notice_all(SERVER_REC *server, +static void sig_message_own_notice_all(SERVER_REC *server, const char *msg, const char *target, bool is_signed) { @@ -383,9 +383,9 @@ static void sig_message_notice_all(SERVER_REC *server, const char *msg, return; if (is_channel) { - /* channel notice */ + /* channel notice */ printformat(server, target, MSGLEVEL_NOTICES, - VERIFIED_MSG2(verified, SILCTXT_NOTICE_PUBLIC), + VERIFIED_MSG2(verified, SILCTXT_NOTICE_PUBLIC), nick, target, msg); } else { /* private notice */