diff mcabber/mcabber/screen.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 bc10fc4eced7
children 902f271743b0
line wrap: on
line diff
--- a/mcabber/mcabber/screen.c	Sun Oct 04 19:07:17 2015 +0200
+++ b/mcabber/mcabber/screen.c	Thu Jul 23 23:44:45 2015 +0200
@@ -1468,6 +1468,7 @@
   int special;
   guint num_history_blocks;
   bool setmsgflg = FALSE;
+  bool clearmsgflg = FALSE;
   char *nicktmp, *nicklocaltmp;
 
   // Look for the window entry.
@@ -1539,12 +1540,21 @@
     scr_update_window(win_entry);
     top_panel(inputPanel);
     update_panels();
+  } else if (settings_opt_get_int("clear_unread_on_carbon") &&
+             prefix_flags & HBB_PREFIX_OUT &&
+             prefix_flags & HBB_PREFIX_CARBON) {
+    clearmsgflg = TRUE;
   } else if (!(prefix_flags & HBB_PREFIX_NOFLAG)) {
     setmsgflg = TRUE;
   }
-  if (setmsgflg && !special) {
-    roster_msg_setflag(winId, FALSE, TRUE);
-    update_roster = TRUE;
+  if (!special) {
+    if (clearmsgflg) {
+      roster_msg_setflag(winId, FALSE, FALSE);
+      update_roster = TRUE;
+    } else if (setmsgflg) {
+      roster_msg_setflag(winId, FALSE, TRUE);
+      update_roster = TRUE;
+    }
   }
 }
 
@@ -2317,7 +2327,7 @@
 {
   if (!(prefix &
         ~HBB_PREFIX_NOFLAG & ~HBB_PREFIX_HLIGHT & ~HBB_PREFIX_HLIGHT_OUT &
-        ~HBB_PREFIX_PGPCRYPT & ~HBB_PREFIX_OTRCRYPT))
+        ~HBB_PREFIX_PGPCRYPT & ~HBB_PREFIX_OTRCRYPT & ~HBB_PREFIX_CARBON))
     prefix |= HBB_PREFIX_IN;
 
   scr_write_message(jidfrom, text, timestamp, prefix, mucnicklen, NULL);