summaryrefslogtreecommitdiff
path: root/src/fe-common/core/fe-ignore.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/fe-common/core/fe-ignore.c')
-rw-r--r--src/fe-common/core/fe-ignore.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/fe-common/core/fe-ignore.c b/src/fe-common/core/fe-ignore.c
index 03fd4dd2..39c4dd9f 100644
--- a/src/fe-common/core/fe-ignore.c
+++ b/src/fe-common/core/fe-ignore.c
@@ -118,7 +118,7 @@ static void cmd_ignore(const char *data)
char *patternarg, *chanarg, *mask, *levels, *timestr, *servertag;
char **channels;
void *free_arg;
- int new_ignore, msecs, level;
+ int new_ignore, msecs, level, flags;
if (*data == '\0') {
cmd_ignore_show();
@@ -156,8 +156,13 @@ static void cmd_ignore(const char *data)
channels = (chanarg == NULL || *chanarg == '\0') ? NULL :
g_strsplit(chanarg, ",", -1);
- rec = ignore_find_full(servertag, mask, patternarg, channels,
- IGNORE_FIND_PATTERN | ((level & MSGLEVEL_NO_ACT) ? IGNORE_FIND_NOACT : 0));
+ flags = IGNORE_FIND_PATTERN;
+ if (level & MSGLEVEL_NO_ACT)
+ flags |= IGNORE_FIND_NOACT;
+ if (level & MSGLEVEL_HIDDEN)
+ flags |= IGNORE_FIND_HIDDEN;
+
+ rec = ignore_find_full(servertag, mask, patternarg, channels, flags);
new_ignore = rec == NULL;
if (rec == NULL) {
@@ -179,6 +184,12 @@ static void cmd_ignore(const char *data)
rec->level |= MSGLEVEL_ALL;
}
+ if (rec->level == MSGLEVEL_HIDDEN) {
+ /* If only HIDDEN was specified add all levels; it makes no
+ * sense on its own. */
+ rec->level |= MSGLEVEL_ALL;
+ }
+
if (new_ignore && rec->level == 0) {
/* tried to unignore levels from nonexisting ignore */
printformat(NULL, NULL, MSGLEVEL_CLIENTNOTICE,