diff mcabber/mcabber/hooks.c @ 2190:ee3a40ffcd8b

New option: 'clear_unread_on_carbon' If the new 'clear_unread_on_carbon' option is set to 1, clear the unread message flag for a contact whenever an outgoing carbon copy of a message sent to that contact is received from another client. --- mcabber/mcabber/commands.c | 2 +- mcabber/mcabber/hbuf.h | 1 + mcabber/mcabber/hooks.c | 17 ++++++++++++----- mcabber/mcabber/hooks.h | 2 +- mcabber/mcabber/screen.c | 18 ++++++++++++++---- mcabber/mcabber/xmpp.c | 2 +- mcabber/mcabberrc.example | 5 +++++ 7 files changed, 35 insertions(+), 12 deletions(-)
author Holger Weiß <holger@zedat.fu-berlin.de>
date Thu, 23 Jul 2015 23:44:45 +0200
parents 038c4d601011
children 18fa5ecb1ef4
line wrap: on
line diff
--- a/mcabber/mcabber/hooks.c	Sun Oct 04 19:07:17 2015 +0200
+++ b/mcabber/mcabber/hooks.c	Thu Jul 23 23:44:45 2015 +0200
@@ -212,6 +212,9 @@
   else if (encrypted == ENCRYPTED_OTR)
     message_flags |= HBB_PREFIX_OTRCRYPT;
 
+  if (carbon)
+    message_flags |= HBB_PREFIX_CARBON;
+
   if (type == LM_MESSAGE_SUB_TYPE_GROUPCHAT) {
     rtype = ROSTER_TYPE_ROOM;
     is_groupchat = TRUE;
@@ -447,10 +450,10 @@
 // normal messages.
 void hk_message_out(const char *bjid, const char *nick,
                     time_t timestamp, const char *msg,
-                    guint encrypted, gpointer xep184)
+                    guint encrypted, gboolean carbon, gpointer xep184)
 {
   char *wmsg = NULL, *bmsg = NULL, *mmsg = NULL;
-  guint cryptflag = 0;
+  guint message_flags = 0;
 
   if (nick) {
     wmsg = bmsg = g_strdup_printf("PRIV#<%s> %s", nick, msg);
@@ -474,10 +477,14 @@
   // cases scr_write_outgoing_message() will load the history and we'd
   // have the message twice...
   if (encrypted == ENCRYPTED_PGP)
-    cryptflag = HBB_PREFIX_PGPCRYPT;
+    message_flags |= HBB_PREFIX_PGPCRYPT;
   else if (encrypted == ENCRYPTED_OTR)
-    cryptflag = HBB_PREFIX_OTRCRYPT;
-  scr_write_outgoing_message(bjid, wmsg, cryptflag, xep184);
+    message_flags |= HBB_PREFIX_OTRCRYPT;
+
+  if (carbon)
+    message_flags |= HBB_PREFIX_CARBON;
+
+  scr_write_outgoing_message(bjid, wmsg, message_flags, xep184);
 
   // We don't log private messages
   if (!nick)