--- a/mcabber/mcabber/xmpp_muc.c Sat Mar 26 13:56:41 2011 +0100
+++ b/mcabber/mcabber/xmpp_muc.c Sat Mar 26 14:45:19 2011 +0100
@@ -344,6 +344,7 @@
{
bool new_member = FALSE; // True if somebody else joins the room (not us)
gchar *mbuf;
+ enum room_flagjoins flagjoins;
if (!buddy_getinsideroom(room_elt->data)) {
// We weren't inside the room yet. Now we are.
@@ -385,7 +386,11 @@
if (mbuf) {
guint msgflags = HBB_PREFIX_INFO;
- if (!settings_opt_get_int("muc_flag_joins"))
+ flagjoins = buddy_getflagjoins(room_elt->data);
+ if (flagjoins == flagjoins_default &&
+ !settings_opt_get_int("muc_flag_joins"))
+ flagjoins = flagjoins_none;
+ if (flagjoins == flagjoins_none)
msgflags |= HBB_PREFIX_NOFLAG;
scr_WriteIncomingMessage(roomjid, mbuf, usttime, msgflags, 0);
if (log_muc_conf)
@@ -407,6 +412,7 @@
enum imaffiliation mbaffil = affil_none;
enum room_printstatus printstatus;
enum room_autowhois autowhois;
+ enum room_flagjoins flagjoins;
const char *mbjid = NULL, *mbnick = NULL;
const char *actorjid = NULL, *reason = NULL;
bool new_member = FALSE; // True if somebody else joins the room (not us)
@@ -640,8 +646,13 @@
// or if the print_status isn't set to none.
if (our_presence || printstatus != status_none) {
msgflags = HBB_PREFIX_INFO;
- if (!our_presence && settings_opt_get_int("muc_flag_joins") != 2)
+ flagjoins = buddy_getflagjoins(room_elt->data);
+ if (flagjoins == flagjoins_default &&
+ settings_opt_get_int("muc_flag_joins") == 2)
+ flagjoins = flagjoins_all;
+ if (!our_presence && flagjoins != flagjoins_all)
msgflags |= HBB_PREFIX_NOFLAG;
+ //silent message if someone else joins, and we care about noone
scr_WriteIncomingMessage(roomjid, mbuf, usttime, msgflags, 0);
}