--- 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);